ASMX Web服务使用SQL Server存储用户数据SQL错误

本文关键字:SQL 用户 用户数 数据 错误 存储 Server 服务 ASMX Web | 更新日期: 2023-09-27 18:28:07

我试图在Visual Web Developer中创建一个ASMX Web服务。我已经成功地实现了以下

  • 创建了一个列为"电子邮件"、"名称"的数据库
  • 创建了服务

我还指定了类似的连接字符串web.config

<connectionStrings>
  <add name="mydb" connectionString="data source=.'SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Database.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
    </connectionStrings>

但在服务表单中输入数据后,我得到了一个SQL异常"@Name附近语法不正确"

[WebMethod]
public string insertuser(String UserName,String Email)
{
    string connectionString = ConfigurationManager.ConnectionStrings["mydb"].ConnectionString;
    SqlConnection sqlCon = new SqlConnection(connectionString);
    SqlCommand nonqueryCommand = sqlCon.CreateCommand();
    sqlCon.Open();
    nonqueryCommand.CommandText = "INSERT  INTO UID (Email, Name) VALUES (@Email, @Name";
    // Add Parameters to Command Parameters collection
    nonqueryCommand.Parameters.Add("@Email", SqlDbType.VarChar, 10);
    nonqueryCommand.Parameters.Add("@Name", SqlDbType.VarChar, 20);

    nonqueryCommand.Parameters["@Email"].Value = UserName;
    nonqueryCommand.Parameters["@Name"].Value = Email;

    nonqueryCommand.ExecuteNonQuery();
    return "done";
}

ASMX Web服务使用SQL Server存储用户数据SQL错误

正如andomar正确指出的那样,您的sql命令中缺少右括号

您可以在sql中生成insert命令,然后将生成的sql粘贴到代码中。

IE你的代码应该看起来像

nonqueryCommand.CommandText="插入UID(电子邮件,名称)值(@电子邮件,@姓名)";

添加右括号:

VALUES (@Email, @Name";

您缺少右括号:

VALUES (@Email, @Name)";