我只想要我的标题所说的内容。我已经阅读过所有以前的类似帖子,但我找不到解决方案。请你看看我的代码吗? 编辑:我没有任何异常。我只是没有看到数据库中的新数据 EDIT2:前4个答案没有解决我的问题,因为我编辑了代码并添加了executenonquery命令。
int admin = 23;
SqlConnection thisConnection = new SqlConnection(
ConfigurationManager.ConnectionStrings[
"Data Source=...;Persist Security Info=True;User ID=myusername;Password=mypassword"]
.ConnectionString);
SqlCommand nonqueryCommand = thisConnection.CreateCommand();
thisConnection.Open();
nonqueryCommand.CommandText = "INSERT INTO Account (Username,Password,AdministratorId) VALUES (@username,@password,@admin)";
nonqueryCommand.Parameters.Add("@username", SqlDbType.VarChar, 20);
nonqueryCommand.Parameters["@username"].Value = UsernameTextbox.Text.ToString();
nonqueryCommand.Parameters.Add("@password", SqlDbType.VarChar, 15);
nonqueryCommand.Parameters["@password"].Value = PasswordTextbox.Text.ToString();
nonqueryCommand.Parameters.Add("@admin", SqlDbType.Int);
nonqueryCommand.Parameters["@admin"].Value = admin;
EDIT:nonquerycommand.ExecuteNonQuery();
thisConnection.Close();
答案 0 :(得分:6)
您似乎并未实际执行查询。在关闭连接之前执行它。
nonquerycommand.ExecuteNonQuery();
答案 1 :(得分:3)
这里有两件事情立即跳出来。
从ConfigurationManager.ConnectionStrings
检索连接字符串时,您应该在配置文件中传递连接字符串的名称,而不是它自己的连接字符串。我怀疑你甚至可能没有获得有效的连接字符串。
您需要在ExecuteNonQuery()
个实例上致电nonqueryCommand
。
答案 2 :(得分:2)
而不是
nonqueryCommand.Parameters.Add("@username", SqlDbType.VarChar,20);
nonqueryCommand.Parameters["@username"].Value = UsernameTextbox.Text.ToString();
使用
nonqueryCommand.Parameters.AddWithValue("@username", UsernameTextbox.Text.ToString());
执行查询:
nonquerycommand.ExecuteNonQuery();
答案 3 :(得分:2)
Chris Farmer有钱。
添加...
nonqueryCommand.ExecuteNonQuery();
答案 4 :(得分:0)
在执行查询之前必须为命令分配连接 为此在thisConnection.Open();
之前添加以下行nonqueryCommand.Connection=thisConnection;
答案 5 :(得分:0)
您必须执行查询并在此之后关闭您的连接,如下所示
nonquerycommand.ExecuteNonQuery();
或者如果要检查是否执行了查询
if(nonquerycommand.ExecuteNonQuery()>0){ //some message or function }
返回的值是该语句影响的行数。