【问题标题】:How to put search result of a query in variables in C#?如何将查询的搜索结果放入 C# 中的变量中?
【发布时间】:2014-02-21 20:01:44
【问题描述】:

我想在数据表中搜索一些输入,如果找到准确的数据,那么我想将这些数据放入另一个表中。如果没有,我将简单地清除相应的TextBox。到目前为止,我已经完成了这些论文。

    private void btn_InputConfirm_Click(object sender, EventArgs e) {
    string strConnection = @"Data Source=F_NOOB-PC\;Initial Catalog=ComShopDB;Integrated Security=True";
    SqlConnection objcon = new SqlConnection(strConnection);
    try {
        string strcmd1 = "SELECT partID,partAvailable FROM Parts WHERE partID LIKE '" + txtbox_ProductSerial.Text + "'AND partAvailable ='yes'";
        SqlCommand objcmd1 = new SqlCommand(strcmd1, objcon);
        objcon.Open();
        objcmd1.ExecuteNonQuery();
        objcon.Close();
    }
    catch (Exception ex) {
        MessageBox.Show(ex.Message);
    }
}

我们将不胜感激。提前致谢。

【问题讨论】:

    标签: c# sql sql-server winforms


    【解决方案1】:

    您可以使用DataTable,使用ExecuteReader 方法并将所有记录加载到DataTable,然后使用AsEnumerable 和一些LINQ,您可以获得List 的结果。

    DataTable dt = new DataTable();
    var reader = objcmd1.ExecuteReader();
    if(reader.HasRows)
    {
        dt.Load(reader);
        var myValues = dt.AsEnumerable()
                  .Select(d => new { 
                                     Id = d["partID"], 
                                     Available = d["partAvailable"]
                                   }).ToList();
    }
    

    您还应该考虑使用parameterized queries 来防止SQL Injection 攻击。

    【讨论】:

    • 我希望我能 +2 提及 SQL 注入攻击。
    【解决方案2】:

    最简单的方法是使用DataAdapter,然后在DataTableDataSet 上使用其Fill() 函数。您无需打开和关闭连接,因为 Fill() 函数会为您执行此操作:

    private void btn_InputConfirm_Click(object sender, EventArgs e)
    {
    
      string strConnection = @"Data Source=F_NOOB-PC\;Initial Catalog=ComShopDB;Integrated Security=True";
      SqlConnection objcon = new SqlConnection (strConnection);
    
      try
      {
          //Writing command//
          string strcmd1 = "SELECT partID,partAvailable FROM Parts WHERE partID LIKE '" + txtbox_ProductSerial.Text + "'AND partAvailable ='yes'";
          System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(strcmd1, objcon);
          System.Data.DataSet ds = new System.Data.DataSet();
          aa.Fill(ds);
      }
      catch ( Exception ex )
      {
        MessageBox.Show (ex.Message);
      }
    

    【讨论】:

      猜你喜欢
      • 2015-12-04
      • 1970-01-01
      • 2017-06-02
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多