C# C中的SqlCommand和connection出错#

C# C中的SqlCommand和connection出错#,c#,sql-server,C#,Sql Server,此代码有错误,但找不到问题。请帮忙 SqlConnection myConnection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = C:\Software Project\BakeryProject Pages\BakeryProject\Databases\Users.mdf; Integrated Security = True"); myConnection.Open();

此代码有错误,但找不到问题。请帮忙

SqlConnection myConnection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = C:\Software Project\BakeryProject Pages\BakeryProject\Databases\Users.mdf; Integrated Security = True");

myConnection.Open();

string commandText = "INSERT INTO Table (Id, Username, First_name, Last_Name, Password, Client, Staff, Admin )";
commandText += "VALUES (1, 'JohnSmith', 'John', 'Smith', 'Pass1', 'Client');";

SqlCommand myCommand = new SqlCommand(commandText, myConnection);
myCommand.Parameters.AddWithValue("@Id", mID);
myCommand.Parameters.AddWithValue("@Username", mUsername);
myCommand.Parameters.AddWithValue("@First_name", mNameFirst);
myCommand.Parameters.AddWithValue("@Last_name", mNameLast);
myCommand.Parameters.AddWithValue("@Password", mPassword);
myCommand.Parameters.AddWithValue("@Client", mClient);

myCommand.ExecuteNonQuery();

您正在尝试添加参数,但从未在查询中定义任何参数。也许这就是你的意思:

string commandText = "INSERT INTO [Table] (Id, Username, First_name, Last_Name, Password, Client) ";
       commandText += "VALUES (@Id, @Username, @First_name, @Last_name, @Password, @Client);";

SqlCommand myCommand = new SqlCommand(commandText, myConnection);
myCommand.Parameters.AddWithValue("@Id", mID);
myCommand.Parameters.AddWithValue("@Username", mUsername);
myCommand.Parameters.AddWithValue("@First_name", mNameFirst);
myCommand.Parameters.AddWithValue("@Last_name", mNameLast);
myCommand.Parameters.AddWithValue("@Password", mPassword);
myCommand.Parameters.AddWithValue("@Client", mClient);

myCommand.ExecuteNonQuery();
注意:我还从脚本中删除了
Staff
Admin
列,因为它们没有下面提到的参数。这应该会给你一个正确的方向

作为补充说明,使用字符串文字在C#中声明查询要容易得多。这样,您就不必处理
+=
和由此产生的奇怪的间距问题:

string commandText =
@"
Insert  [Table] (Id, Username, First_name, Last_Name, Password, Client)
Values  (@Id, @Username, @First_name, @Last_name, @Password, @Client);      
";

您具体遇到了哪些错误?您列出了8列,但您只有6个值,可能会删除Staff和Admin?一个明显的问题是
commandText+=“值”
。您必须在
commandText+=“值”
之前添加一个空格,以便它可以采用正确的SQL格式。@granit否,因为在此之前有一个“)”,所以不需要空格。@juharr噢,是的,您是对的。您应该签出并停止使用
.AddWithValue()
-这可能会导致意外的结果…在此之后引发错误“System.Data.dll中发生'System.Data.SqlClient.SqlException'类型的异常,但未在用户代码中处理其他信息:关键字'Table'附近的语法不正确。”。“有什么想法吗?@RossLeech使用您表的实际名称…表名是table,可能是其他名称吗?@Siyual
Into
关键字丢失了,所以我在中添加了该关键字。@RossLeech请不要将您的数据库对象命名为保留关键字。这不仅会像现在这样让人非常困惑,而且您可能会遇到一大堆问题。”rd—并且很难诊断—错误。请为表指定一个有意义的名称,该名称与它预期存储的数据相关。但是,如果您仍然决定使用
作为表名,则需要明确使用以下符号:
[table]
。这会将您的值标记为标识符,而不是关键字。