C# 在消息框中显示SQL结果
我试图在消息框中显示SQL查询的结果,但在使其正常工作时遇到了问题 这是我的代码:C# 在消息框中显示SQL结果,c#,sql,messagebox,C#,Sql,Messagebox,我试图在消息框中显示SQL查询的结果,但在使其正常工作时遇到了问题 这是我的代码: SqlConnection CN = new SqlConnection(constring); DataTable dt = new DataTable(); CN.Open(); SqlDataAdapter sda = new SqlDataAdapter("select (Table_MAL_MEZANYAMASROF.MOKHASASMEZANYA- sum (MAL_ERTEBAT.MONY)) a
SqlConnection CN = new SqlConnection(constring);
DataTable dt = new DataTable();
CN.Open();
SqlDataAdapter sda = new SqlDataAdapter("select (Table_MAL_MEZANYAMASROF.MOKHASASMEZANYA- sum (MAL_ERTEBAT.MONY)) as 'debit' from Table_MAL_MEZANYAMASROF,MAL_ERTEBAT where Table_MAL_MEZANYAMASROF.BANDNO=MAL_ERTEBAT.BANDNO and MAL_ERTEBAT.BANDNO= '" + EdkhalBayanto.txtBandNo.Text + "'and MAL_ERTEBAT.BANDNAME = '" + EdkhalBayanto.txtBandName.Text + "' group by Table_MAL_MEZANYAMASROF.MOKHASASMEZANYA", CN);
sda.Fill(dt);
MessageBox.Show(dt);
如果您确定此查询将只返回datatable中的一行和一列,则可以尝试以下操作
MessageBox.Show(dt.Rows[0][0].ToString());
如果只有一个结果,请尝试以下操作:
SqlConnection CN = new SqlConnection(constring); // declare connection as CN
string Query = "select (Table_MAL_MEZANYAMASROF.MOKHASASMEZANYA- sum (MAL_ERTEBAT.MONY)) as 'debit' from Table_MAL_MEZANYAMASROF,MAL_ERTEBAT where Table_MAL_MEZANYAMASROF.BANDNO=MAL_ERTEBAT.BANDNO and MAL_ERTEBAT.BANDNO = @BandNo and MAL_ERTEBAT.BANDNAME = @BandName group by Table_MAL_MEZANYAMASROF.MOKHASASMEZANYA" // declare query as string Query
CN.Open(); // open connection
using (var cmd = new SqlCeCommand(Query, CN)) // initialize a new SQL command
{
cmd.Parameters.Add("@BandNo", SqlDbType.NVarChar, 100);
cmd.Parameters.Add("@BandName", SqlDbType.NVarChar, 100);
cmd.Parameters["BandNo"].Value = EdkhalBayanto.txtBandNo.Text;
cmd.Parameters["BandName"].Value = EdkhalBayanto.txtBandName.Text;
result = (string) cmd.ExecuteScalar(); // returns the first row of the first column, ignores everything else
}
CN.Close(); // close connection
MessageBox.Show(result); // show the result in a messagebox
请注意这是如何使用参数的,而不是定义查询本身中的所有内容。您可能需要自己编辑参数。以及异常或错误消息?您想在此处显示什么<代码>数据表?如果从该查询中获得多个结果,该怎么办?MessageBox仍然是向用户输出这些结果的正确方式吗?请考虑这一点。不能在消息框中显示DATABATE。您可以将数据放在MessageBox中,但这可能是相当大的工作量。
dt
不是字符串,而是数据表。MessageBox设计用于接收字符串。此外,您应该使用参数化查询,因为您很容易受到代码中SQL注入的攻击。