我正在使用Visual Composer我收到此错误

时间:2017-10-02 04:59:51

标签: c# visual-studio-2013 windows-applications

我在执行选择查询时收到此异常: -

  

System.Data.dll中发生了'System.Data.SqlClient.SqlException'类型的异常,但未在用户代码中处理。无法绑定多部分标识符“sd.MED_ID”。

我的代码是

window.scroll({ top: 400, left: 0, behavior: 'smooth' });

1 个答案:

答案 0 :(得分:0)

以下是造成此错误的原因:
from SYM_DETAIL sd"+ "inner join MEDICINE

您在sdinner之间缺少空格,因此别名变为sdinner

另一个更严重的问题是您要连接字符串以创建SQL语句。这是一种安全隐患,因为它为SQL injection攻击敞开了大门 要删除在查询中使用参数所需的威胁,必须使用SqlCommand实例。

另外,您应该注意SqlConnectionSqlCommandSqlDataAdapter都实现了IDisposable接口,因此您应该将它们包装在using语句中。
我不知道你的代码中的connection类是什么,但是从我看到的内容中包含SqlConnection。我建议不要使用SqlConnection,因为SqlConnection应该关闭并处理以返回连接池。

以下是我建议编写此代码的方法:

// a class member
private string connectionString; 

// In your constructor
connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;

private void set_data_Click(object sender, EventArgs e)
{
    var ds = new DataSet();
    var query = "Select SY_DID, S_ID as 'SYMPTOM NO', SD_ID as 'DISK NO', m.med_name as 'MED NAME', SRO, PNR, SYM as '% SYM', DMD" +
                " from SYM_DETAIL sd" +
                " inner join MEDICINE m on sd.MED_ID=m.med_Id" +
                " where sd.S_ID = @S_ID" +
                " and sd.SD_ID= @SD_ID";
    using(var con = new SqlConnection(connectionString)
    {
        using(var cmd = new SqlCommand(query, con))
        {
            cmd.Parameters.Add("@S_ID", SqlDbType.VarChar).Value = txtbxsymid_update.Text;
            cmd.Parameters.Add("@SD_ID", SqlDbType.VarChar).Value = txtbxdiskid_update.Text;
            using(var adapter = new SqlDataAdapter(cmd))
            {
                adapter.Fill(ds, "SYM_DETAIL");
            }
        }
    }
    dataGridView1.DataSource = ds.Tables[0];
}