我有一张简短的表格:
Users
UserID Guid doesnt allow null
Avatar image allows null
Reputation int allows null
我使用了以下声明:
string insertCommand = "INSERT INTO Users (UserID) VALUES" +""+ "('"+UsersIdentityToinsert+"')";
UsersIdentityToinsert(此值是Guid,我检查了它的值,它不是null)。
没有抛出异常。一旦用户按下登录按钮,他就被转移到另一个页面,并插入他的记录。 我接着调试了该语句的执行情况。
当我在Visual Studio 2010中返回我的服务器资源管理器并单击刷新时,Users表为空。那是为什么?
连接字符串
<add name="YourGuruDB" connectionString="Data Source=DIMA-00AA1DA557;Initial Catalog=model;Integrated Security=True"/>
我从配置中检索到代码:
WebConfigurationManager.ConnectionStrings["YourGuruDB"].ConnectionString;
添加了:
public static void InsertUsers(Guid UsersIDentity)
{
SqlConnection sqlConnect = getSqlConnection();
SqlCommand sqlCommand = new SqlCommand(RegisterAdo.insertCommand(UsersIDentity), sqlConnect);//insert command method returns the insert statement described above
try
{
sqlConnect.Open();
sqlCommand.ExecuteNonQuery();
}
catch (Exception x)
{
HttpContext.Current.Response.Redirect("~/ErrorPage.aspx?Error=" + WRITE_ERROR);
}
finally
{
sqlConnect.Close();
}
}
答案 0 :(得分:1)
而不是使用
"INSERT INTO Users (UserID) VALUES" +""+ "('"+UsersIdentityToinsert+"')";
使用它:
"INSERT INTO Users (UserID) VALUES" +""+ "(CONVERT(uniqueidentifier, '"+UsersIdentityToinsert+"'))";
你真的应该使用一个准备好的Statement而不是连接sql。
DB连接怎么样?到目前为止你是否运行过任何成功的陈述?尝试一个简单的选择。
答案 1 :(得分:0)
试试这个:
"INSERT INTO Users (UserID) VALUES ('"+UsersIdentityToinsert+"')";
答案 2 :(得分:0)
有很多事情需要检查
ExecuteNonQuery()
对象上有SqlCommand
。此外,您的代码容易受到SQL注入攻击。您应该使用参数化查询来防止这种情况。这个article on SQL Injection Attacks将帮助您解决这个问题。
您还缺少我希望看到的代码。有点像这样:
string insertCommand = "INSERT INTO Users (UserID) VALUES"
+""+ "('"+UsersIdentityToinsert+"')";
string cs = WebConfigurationManager.ConnectionStrings["YourGuruDB"].ConnectionString;
SqlConnection conn = new SqlConnection(cs);
SqlCommand cmd = new SqlCommand(insertCommand, conn);
conn.Open();
cmd.ExexuteNonQuery();
conn.Close();