【发布时间】:2018-08-18 13:33:03
【问题描述】:
由于某种原因,我的函数有时不返回查询结果,尽管它应该(在 SQL Studio 中运行)。我知道代码不是很干净而且有点奇怪,但它有时会起作用。我想不通。
BestellNo 可以在查询中输入为整数或字符串。
我想问题可能是这条线?
if (dsUniversal.Tables[0].Rows.Count > 0)
string HA_No = "SELECT [A-Nr], B, C, [D-Nr], E FROM Table WHERE (BestellNr = '" + BestellNo + "')";
private string[] getStringData(string strSQL, string conn)
{
string ret = "";
DataSet dsUniversal = new DataSet();
System.Data.SqlClient.SqlConnection sConn = new System.Data.SqlClient.SqlConnection(conn);
if (sConn.State == 0)
sConn.Open();
System.Data.SqlClient.SqlDataAdapter daUniversal = new System.Data.SqlClient.SqlDataAdapter(strSQL, sConn);
daUniversal.MissingSchemaAction = MissingSchemaAction.AddWithKey;
try
{
daUniversal.Fill(dsUniversal);
}
catch (System.Data.SqlClient.SqlException sEx)
{
sConn.Close();
ret = "Fehler";
logIt("SQL Fehler (" + DateTime.Now.ToString() + "): " + sEx.Message, "Universal");
string[] err = { ret, ret, ret, ret, ret };
return err;
}
sConn.Close();
if (dsUniversal.Tables[0].Rows.Count > 0)
{
string var1 = dsUniversal.Tables[0].Rows[0].ItemArray[0].ToString();
string var2 = dsUniversal.Tables[0].Rows[0].ItemArray[1].ToString();
string var3 = dsUniversal.Tables[0].Rows[0].ItemArray[2].ToString();
string var4 = dsUniversal.Tables[0].Rows[0].ItemArray[3].ToString();
string var5 = dsUniversal.Tables[0].Rows[0].ItemArray[4].ToString();
string[] res = { var1, var2, var3, var4, var5 };
return res;
}
else
{
string var1 = "";
string var2 = "";
string var3 = "";
string var4 = "";
string var5 = "";
string[] res = { var1, var2, var3, var4, var5 };
return res;
}
}
【问题讨论】:
-
您必须使用参数来避免 SQL 注入和格式错误。如果您使用的是 DataAdapter,则无需打开和关闭连接,适配器会自动执行此操作。
BestellNo can be put in as a integer or a string in the query.不要假设。你知道它是什么,所以传递正确的数据类型(使用参数)。
标签: c# sql visual-studio visual-studio-2010