c#SqlDataAdapter不';t返回结果

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 = '"

出于某种原因,我的函数有时由于某种原因不返回查询结果,尽管它应该返回(在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 + "')";

    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可以作为整数或字符串输入查询。
不要这样假设。您知道它是什么,所以请传递正确的数据类型(使用参数)。