没有数据插入到我的表中

时间:2011-05-29 12:08:22

标签: c# asp.net sql

我有一张简短的表格:

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();
    }
}

3 个答案:

答案 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)

有很多事情需要检查

  • 您是否已连接到正确的数据库?
  • 执行此SQL语句的代码是否真正有效。您没有显示该代码。我希望某个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();