从 SQL 读取不会将值放在字符串列表中



我正在尝试在字符串列表中添加来自SQL的数据,但它使Saynig保持我的字符串list = null。

按钮上的代码:

    protected void Button2_Click(object sender, EventArgs e)
        {
            // go back to the menu
        }
        protected void Button3_Click(object sender, EventArgs e)
        {
            // code to display the books by sanctuary
            ListBox1.Items.Clear();
            List<String> s = DBConnectivity.LoadBooksBySanctuary2(3/*int.Parse(DDSanctuary.SelectedValue)*/);
            foreach (var detail in s)
            {
               ListBox1.Items.Add(detail);
            }


        }

代码从SQL读取并放入字符串列表中。我知道我的连接正常工作,因为我可以添加宠物

 public static List<String> LoadPetsBySanctuary2(int sID)
        {
            List<String> saName = new List<String>();
            SqlConnection myConnection = GetConnection();
            // string myQuery = "SELECT  Name, categId, cName FROM Book, Category WHERE Book.CategID=Category.ID AND Book.authorId = " + sID;
            string myQuery = "SELECT  Name  FROM pet WHERE sanID = " + saName;
            SqlCommand myCommand = new SqlCommand(myQuery, myConnection);
            try
            {
                myConnection.Open();
                SqlDataReader myReader = myCommand.ExecuteReader();
                while (myReader.Read())
                {
                 //   saName.Add(myReader["Name"].ToString());
                    saName.Add(myReader["Name"].ToString());
                }
                return saName;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception in DBHandler", ex);
                return null;
            }
            finally
            {
                myConnection.Close();
            }
        }

如果列表以 null返回,那么您将击中catch(Exception ex)块。那是唯一返回零的地方。提示:停止吞咽异常。例外会告诉您问题是什么。

另外:使用参数 - 永远不会附加这样的输入。

您可能打算使用sId而不是saName

我可以在这里谦虚地建议一些" dapper":

public static List<String> LoadPetsBySanctuary2(int sID)
{
    return GetConnection().Query<string>(
        "SELECT  Name  FROM pet WHERE sanID = @sID",
        new { sID }).AsList();
}

注意:尚不清楚GetConnection 是否通过连接的所有权;如果是这样,则应使用using

public static List<String> LoadPetsBySanctuary2(int sID)
{
    using(var myConnection = GetConnection())
    {
        return myConnection.Query<string>(
            "SELECT  Name  FROM pet WHERE sanID = @sID",
            new { sID }).AsList();
    }
}

相关内容

  • 没有找到相关文章

最新更新