Asp.net 关键字'附近的语法不正确;d1和x27;

Asp.net 关键字'附近的语法不正确;d1和x27;,asp.net,sql,sql-server,Asp.net,Sql,Sql Server,SQL查询在SQLServerManagementStudio中工作。但是,在VisualStudio中,它给出了一个错误 D1附近的语法不正确 代码: 更改查询,如下所示 "SELECT d1.*, d2.* FROM KFM.dbo.ToolBoxDocContent as d1, KFM.dbo.ToolBoxDocument as d2 where d1.DocumentId = d2.DocumentId and d2.DocumentId ='" + _i

SQL查询在SQLServerManagementStudio中工作。但是,在VisualStudio中,它给出了一个错误

D1附近的语法不正确

代码:


更改查询,如下所示

 "SELECT  d1.*, d2.* FROM KFM.dbo.ToolBoxDocContent as d1, KFM.dbo.ToolBoxDocument as d2
           where d1.DocumentId = d2.DocumentId and  d2.DocumentId ='" + _id + "'";

我在你的询问中注意到的一件事是

  • 在使用“+”的两个联接之前未正确提供空格。在
    where
  • where
    子句的语法不正确。删除
    之后的额外'='
    处的
    和=d2.DocumentId=“+\u id
  • 您的最终查询如下所述:

    string sqlCommand = "SELECT  d1.*, d2.* FROM KFM.dbo.ToolBoxDocContent as d1, KFM.dbo.ToolBoxDocument as d2" +
                       " where d1.DocumentId = d2.DocumentId and d2.DocumentId =" + _id;
    
    更新:

    string sqlCommand = "SELECT  d1.*, d2.* FROM KFM.dbo.ToolBoxDocContent as d1, KFM.dbo.ToolBoxDocument as d2" +
                       " where d1.DocumentId = d2.DocumentId and d2.DocumentId = '" + _id + "'";
    

    在查询中,您还输入了=sign after和

    试试这个代码

    string sqlCommand = "SELECT d1.*, d2.* FROM KFM.dbo.ToolBoxDocContent d1 inner join KFM.dbo.ToolBoxDocument as d2 on d1.DocumentId = d2.DocumentId " + " where d2.DocumentId = " + _id;
    

    另外,最好编写存储过程,并从c代码中调用。

    -旧样式的逗号分隔表列表样式在ANSI-92 SQL标准(20多年前)中已不再使用看看我的答案。希望它能帮助你解决你的问题。要改掉的坏习惯是:使用字符串连接在sql语句中包含用户输入。这会使你容易受到sql注入攻击。请求ID=a610fa71-fbb6-4cea-a950-b8d4bd83f47f“cea”附近的语法不正确。我已经更改了它,现在它说:语法不正确near'cea','cea'是ID的一部分。或者如果我选择了不同的记录;无效的列名'b47a851b'。无效的列名'ccac'。无效的列名'aca1'。无效的列名'a2adab1643ca'。因此,取决于我单击的记录,它会给我不同的消息。看看我更新的答案。希望你能解决你的问题。投票人:不要投票回答时不要提供有力的理由。
    string sqlCommand = "SELECT d1.*, d2.* FROM KFM.dbo.ToolBoxDocContent d1 inner join KFM.dbo.ToolBoxDocument as d2 on d1.DocumentId = d2.DocumentId " + " where d2.DocumentId = " + _id;
    
    private void GetDataByID(string _id)
    {
        string connectionString = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;
        string sqlCommand = "SELECT  d1.*, d2.* "
                     + " FROM KFM.dbo.ToolBoxDocContent as d1"
                     + " INNER JOIN KFM.dbo.ToolBoxDocument as d2 ON d1.DocumentId = d2.DocumentId" 
                     + " WHERE d2.DocumentId = @ID";    
    
        using (SqlConnection connection = new SqlConnection(connectionString))
        using (SqlCommand cmd = new SqlCommand(sqlCommand, connection))
        {
            cmd.Parameter.Add("@ID", SqlDbType.Int).Value = int.Parse(_id);
            try
            {
                connection.Open();
                using (SqlDataReader MyReader = cmd.ExecuteReader()_
                {
                    while (MyReader.Read())
                    {
                        string sDueWeek = MyReader["DueWeek"].ToString();
                        string sTitle = MyReader["DocumentTitle"].ToString();
                        //string sEnglishBodyContent = MyReader["DocumentBody"].ToString();
                        //string sFrenchBodyContent = MyReader["DocumentBody"].ToString();
                        txb_Week.Text = sDueWeek;
                        txb_Title.Text = sTitle;
                    }
                }
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
    }