c#SqlDataAdapter不';t返回结果
出于某种原因,我的函数有时由于某种原因不返回查询结果,尽管它应该返回(在SQLStudio中运行)。我知道代码不是很干净,也有点奇怪,但有时它是有效的。我想不出来。c#SqlDataAdapter不';t返回结果,c#,sql,visual-studio,visual-studio-2010,C#,Sql,Visual Studio,Visual Studio 2010,出于某种原因,我的函数有时由于某种原因不返回查询结果,尽管它应该返回(在SQLStudio中运行)。我知道代码不是很干净,也有点奇怪,但有时它是有效的。我想不出来。 BestellNo可以作为整数或字符串输入查询中。 我想问题可能是这条线 if (dsUniversal.Tables[0].Rows.Count > 0) string HA_No = "SELECT [A-Nr], B, C, [D-Nr], E FROM Table WHERE (BestellNr = '"
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;
}
}
如果您只是读取数据,则不需要使用
DataSet
、DateTable
和SqlDataAdapter
等。只需使用SqlDataReader
获取数据并完成处理即可
private static string[] ReadData(string queryString, string connectionString)
{
var result = new List<string>();
using (var connection =
new SqlConnection(connectionString))
{
var command =
new SqlCommand(queryString, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// Call Read before accessing data.
while (reader.Read())
{
// Please note I am just reading the value of the first column
// so if you want other columns, you would need to modify this
// to suit your needs.
result.Add(reader[0].ToString());
}
// Call Close when done reading.
reader.Close();
}
return result.ToArray();
}
私有静态字符串[]读取数据(字符串查询字符串、字符串连接字符串)
{
var result=新列表();
使用(var)连接=
新的SqlConnection(connectionString))
{
var命令=
新的SqlCommand(queryString,connection);
connection.Open();
SqlDataReader=command.ExecuteReader();
//在访问数据之前调用Read。
while(reader.Read())
{
//请注意,我只是读取第一列的值
//因此,如果需要其他列,则需要修改此
//满足你的需要。
result.Add(读取器[0].ToString());
}
//阅读完毕后,呼叫Close。
reader.Close();
}
返回result.ToArray();
}
您必须使用参数来避免SQL注入和格式错误。如果您使用的是DataAdapter,则不需要打开和关闭连接,适配器会自动执行此操作BestellNo可以作为整数或字符串输入查询。
不要这样假设。您知道它是什么,所以请传递正确的数据类型(使用参数)。