-2

我创建了一个数据库和一个包含 2 个字段 Id 和 Name 的表。现在我想在单击给出示例代码的按钮时插入值。它不工作。

using (SqlConnection connection = new SqlConnection(strConnection))
{
    SqlCommand command =new SqlCommand("insert into Test (Id,Name) values(5,kk);",connection);
    connection.Open();
    command.ExecuteNonQuery();
     connection.Close();
}
4

6 回答 6

2

字符串值应该用引号引起来。这与 C# 关系不大,更多的是与 T-SQL

试试这个,注意 kk;

SqlCommand command =  
      new SqlCommand("insert into Test (Id,Name) values(5,'kk');",connection);
connection.Open();
command.ExecuteNonQuery();
connection.Close();

另外我在这里假设这Id不是一个自动增量字段。如果是,那么您不应该填写它。

作为一个侧节点,您应该查看参数化查询以防止 SQL 注入。

于 2012-09-12T06:53:08.117 回答
1

在这种情况下,您需要在 kk 周围加上单引号 '

insert into Test (Id,Name) values(5,'kk')

通常,您应该使用参数化查询

于 2012-09-12T06:53:55.960 回答
0

试试这个:

SqlConnection con = new SqlConnection('connection string here');    
string command = "INSERT INTO Test(Id, Name) VALUES(5, 'kk')";
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = command;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
于 2012-09-12T06:56:58.617 回答
0

试试这个:

SqlConnection conn = new SqlConnection();
SqlTransaction trans = conn.BeginTransaction();
try
{
   using (SqlCommand cmd = new SqlCommand("insert into Test (Id,Name) values(@iD, @Name)", conn, trans))
   {
      cmd.CommandType = CommandType.Text;
      cmd.AddParameter(SqlDbType.UniqueIdentifier, ParameterDirection.Input, "@iD", ID);
      cmd.AddParameter(SqlDbType.VarChar, ParameterDirection.Input, "@Name", Name);

      cmd.ExecuteNonQuery();
   }

   conn.CommitTransaction(trans);
}
catch (Exception ex)
{
   conn.RollbackTransaction(trans);
   throw ex;
}
于 2012-09-12T06:58:05.963 回答
0
  1. 字符串值应介于 ' '
  2. 验证您的连接字符串

            //add your connection string between ""
            string connectionString = "";
    
            using (var conn = new SqlConnection(connectionString))
            using (DbCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = "INSERT INTO pdf (Id, Name) VALUES (5, 'kk')";
    
                conn.Open();
    
                conn.ExecuteNonQuery();
    
                conn.Close();
             }
    
于 2012-09-12T07:01:59.357 回答
0

看起来您当前的代码存在多个问题。

  • 正如其他答案中所指出的,您需要用单引号将字符串值括起来。
  • 您需要启用与 SQL 服务器的远程连接。

如果您使用的是 SQL Server 2008,请检查以下链接。

如何在 SQL Server 2008 中启用远程连接?

对于 SQL Server 2005,请参见:

如何配置 SQL Server 2005 以允许远程连接

于 2012-09-12T07:06:16.297 回答