c#SqlDataAdapter不返回结果

时间:2018-03-09 22:06:55

标签: c# sql visual-studio visual-studio-2010

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

1 个答案:

答案 0 :(得分:0)

如果您只是在阅读数据,则无需使用DataSetDateTableSqlDataAdapter等。只需使用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();
}