我正在尝试使用ADO.NET开发应用程序.我在两个不同的数据库中有两个表.他们每个人都有一部分完整的数据.现在我需要编写一个查询,以便我能够从两个表中获取完整的记录.例如,表1具有Index_no,emp_ID和联系号.表2包含ind...
我正在尝试使用ADO.NET开发应用程序.我在两个不同的数据库中有两个表.他们每个人都有一部分完整的数据.现在我需要编写一个查询,以便我能够从两个表中获取完整的记录.例如,表1具有Index_no,emp_ID和联系号.表2包含index_no,emp_name,salary和dept. index_no对于每个表中的相同记录部分是相同的.
以下是获取薪水<20000的所有记录的代码.
sqlCmd2 = new SqlCommand("SELECT * FROM table1 WHERE Index_No =@Index_No",
TestCon);
int i = 0;
while (reader.Read()) {
ListBox1.Items.Add(reader.GetInt32(0) + " - " +
reader.GetString(1) + " - " + reader.GetString(2));
// Name.Text += reader["Name"] + "<br />"; ;
// Depart.Text += reader["Depart"] + "<br />"; ;
array1[i] = reader.GetInt32(0);
i++;
}
sqlCmd2.Parameters.Add("@Index_No", System.Data.SqlDbType.Decimal);
i = 0;
do {
sqlCmd2.Parameters["@Index_No"].Value = array1[i];
reader1 = sqlCmd2.ExecuteReader();
reader1.Read();
ListBox2.Items.Add(reader1.GetString(1));
i++;
} while (i < array1.Length);
这个问题是我从table2只得到一个记录信息,而对于表1,我得到了所有想要的记录信息. do-while循环似乎仅在一次迭代后终止.
解决方法:
这取决于两个不同的数据库意味着什么.如果两个数据库在同一个SQL Server上运行,则可以轻松访问另一个数据库的表
SELECT * FROM OtherDb.dbo.TableOnOtherDb
如果没有,我建议你在两个数据库之间创建一个数据库链接(参见问题How do I create and query linked database servers in SQL Server?).然后您可以访问上面的其他表.
在这两种情况下,您都可以使用JOIN查询来连接这两个表.那么您只需要一个数据读取器
SELECT
A.Index_no, A.emp_ID, A.contact_no,
B.emp_name, B.salary, B.dept
FROM
table1 A
INNER JOIN table2 B
ON A.Index_no = B.Index_no
WHERE
B.salary < 20000
ORDER BY
B.emp_name
UPDATE
如果涉及的记录数量很少,那么如果由于某种原因无法链接这两个服务器,则使用IN子句仅查询第二个表将会更有效率.
SELECT *
FROM table1
WHERE Index_no IN (4,12,17,30,112,167)
您可以像这样创建此SQL语句
string[] stringArray = array1
.Select(i => i.ToString())
.ToArray();
string list = String.Join(",", stringArray);
string sql = "SELECT * FROM table1 WHERE Index_No IN (" + list + ")";
做第二个循环的惯用方法是(不要做)
for (int i = 0; i < array1.Length; i++) {
...
}
本文标题为:c# – 使用Data Reader访问两个数据库
基础教程推荐
- C#中winform中panel重叠无法显示问题的解决 2023-02-02
- C#与java TCP通道加密通信实例 2023-05-06
- C#实体对象序列化成Json并让字段的首字母小写的两种解决方法 2022-12-26
- Unity3D实现物体旋转缩放移动效果 2023-01-11
- C#构造函数在基类和父类中的执行顺序 2023-05-31
- C#如何绑定多个按钮到同一个事件 2023-05-31
- 关于C#理解装箱与拆箱 2023-04-28
- 浅谈C#中Action和Func回调的常用方式 2023-05-26
- C#实现拼图游戏 2023-04-27
- C#关键字async/await用法 2023-02-03