我很难弄清楚如何在C#中获得更多的SQL查询。我有这样的事情:
breakControlq.CommandText =
@"SELECT something as q1 From table" +
"SELECT somethingelse as q2 FROM table where this = this";
breakControlq.CommandType = CommandType.Text;
breakControlq.Connection = hd01Connect;
try
{
hd01Connect.Open();
breakControlRead = breakControlq.ExecuteReader();
while (breakControlRead.Read())
{
textBox1.AppendText(breakControlRead["q1"].ToString());
textBox2.AppendText(breakControlRead["q2"].ToString());
}
catch(System.Data.SqlClient.SqlException ex)
{
MessageBox.Show(ex.Message, "Connection Error");
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?我是否必须对每个查询重复连接/命令?
我对此很陌生,你们中的有些人会说这已经在某处得到了回答,但是我搜索了很多帖子,以至于当我开始寻找解决方案时,我感到更加困惑。
您正在寻找.NextResult()。该.Read()方法改变在当前网格下一行; .NextResult()移至下一个网格:
while (breakControlRead.Read())
{
// process rows from first grid
}
if(breakControlRead.NextResult()) {
while (breakControlRead.Read())
{
// process rows from second grid
}
}
Run Code Online (Sandbox Code Playgroud)
或者 “ dapper”将通过.QueryMultiple()以下方式公开此内容:
using(var multi = conn.QueryMultiple(sql, args)) {
var s = multi.Read<string>().AsList(); // items from first grid
var i = multi.ReadSingle<int>(); // items from second grid
// ...
}
Run Code Online (Sandbox Code Playgroud)
注意!您确实需要确保两个查询用空格或;; 分隔。在您的情况下,这会很好:
@"SELECT something as q1 From table
SELECT somethingelse as q2 FROM table where this = this";
Run Code Online (Sandbox Code Playgroud)
(请注意空格)
替代方式,更正确的是:
@"SELECT something as q1 From table;
SELECT somethingelse as q2 FROM table where this = this;";
Run Code Online (Sandbox Code Playgroud)
要么:
@"SELECT something as q1 From table;SELECT somethingelse as q2 FROM table where this = this;";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1947 次 |
| 最近记录: |