我有一个包含两个表的数据库.这两个表都是相关的,并且具有相同的关键字段.例如,它们都具有对应于ISBN = 12345的数据行,但是这两个表具有关于该ISBN的不同数据.
所以,我试图弄清楚如何将两个表中的数据显示到一个dataGridView中.我尝试过在网上找到的一些SQL命令,但看起来C#中的命令可能与普通的SQL查询不同.
假设table1具有以下字段:ISBN,颜色,大小和table2具有ISBN,weight字段.
我需要一种在数据网格视图中显示ISBN,颜色,大小,重量的方法.我想我必须以某种方式用适配器来做这件事.我可以单独连接并对表进行查询,并在我的datagridview中显示数据,但我无法弄清楚如何混合来自两个单独表的数据.
如果你有一个很好的资源我可以读到这个我很想拥有它,我的google-fu让我失望.
这是我现在可以使用我的数据库做的一个例子:
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'database1DataSet.Book' table. You can move, or remove it, as needed.
this.bookTableAdapter.Fill(this.database1DataSet.Book);
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @"C:\Users\Geoff\Documents\cs 351\Database1.accdb" + ";Persist Security Info=False;";
OleDbConnection conn = new OleDbConnection(connectionString);
string query = "select * from Book where ISBN = 12345";
OleDbCommand com = conn.CreateCommand();
com.CommandText = query;
OleDbDataAdapter adapter = new OleDbDataAdapter(com);
DataSet data = new DataSet();
conn.Open();
adapter.Fill(data);
conn.Close();
dataGridView1.DataSource = data.Tables[0];
}
Run Code Online (Sandbox Code Playgroud)
所以,基本上,我想做我上面所做的事情,但我也希望包含来自不同表格的数据.另一个表还有一个关键字段ISBN,它包含与第一个表匹配的ISBN值.
研究如何使用JOIN将两个表的结果JOIN组合在一起返回ON一些公共值
也可以看看
ON与WHEREC# 或 OLEDB 没有任何限制——它是基本的 SQL。
对于您所询问的具体内容,查询可能如下所示:
SELECT T1.ISBN, T1.color, T1.size, T2.weight
FROM table1 T1
INNER JOIN table2 T2
ON T1.ISBN = T2.ISBN
WHERE ISBN = '12345';
Run Code Online (Sandbox Code Playgroud)
(不需要将table1别名为 T1 ——我只是作为一个例子;在具有较长表名的更复杂的查询中,您可能不想一直重复表名)
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |