【问题标题】:Cannot insert data into SQL Server database无法将数据插入 SQL Server 数据库
【发布时间】:2012-03-29 20:03:21
【问题描述】:

我已经阅读了所有以前的类似帖子,但我找不到解决方案。你能看看我的代码吗?我没有任何例外。我只是在数据库中没有看到新数据。

int admin = 23;

SqlConnection thisConnection = new SqlConnection(
     ConfigurationManager.ConnectionStrings["myconnectionstring"].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;

nonquerycommand.ExecuteNonQuery();

thisConnection.Close();

【问题讨论】:

  • 您是否收到错误消息?还是什么都没发生?
  • 第一眼看起来不错。您确定您没有(不经意间)使用随后会自动回滚的事务吗?
  • 不要重复你的问题。 (stackoverflow.com/questions/9932254/…)
  • 这是我用于特定表格的唯一代码
  • 这是一个非常奇怪的连接字符串名称:"Data Source=...;Persist Security Info=True;User ID=myusername;Password=mypassword"

标签: c# asp.net sql-server-2008


【解决方案1】:

您正在使用连接字符串索引连接字符串集合?

int admin = 23;

  SqlConnection thisConnection = new SqlConnection(
"Data Source=...;Persist Security Info=True;User ID=myusername;Password=mypassword");
 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;

 nonquerycommand.ExecuteNonQuery();


 thisConnection.Close();

您需要修复连接字符串。

【讨论】:

    【解决方案2】:

    我不确定这是否是一个错误,但ConfigurationManager 中的ConnectionStrings 索引器正在寻找连接字符串的名称

    <connectionStrings>
        <add name="SomeDB" connectionString="..." />
    </connectionStrings>
    
    ConfigurationManager.ConnectionStrings["SomeDB"].ConnectionString
    

    我认为这会导致您的代码出现错误,可能是空引用异常,但我不记得该类是如何工作的。

    【讨论】:

      【解决方案3】:

      我认为您正在错误地拉出连接字符串。 ConfigurationManager.Connectionstrings 以 app/web.config 文件中连接字符串的名称为键。尝试使用 .config 文件中的名称,或者只是将连接字符串硬编码到 SqlConnection 对象构造函数中。

      【讨论】:

        【解决方案4】:
        SqlConnection thisConnection = new SqlConnection(
            ConfigurationManager.ConnectionStrings["NameOfConnectionString"].ConnectionString); 
        

        【讨论】:

          猜你喜欢
          • 2017-03-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-02
          • 1970-01-01
          相关资源
          最近更新 更多