-2

Id と Name の 2 つのフィールドを持つデータベースとテーブルを作成しました。ここで、サンプルコードが与えられたボタンをクリックして値を挿入したいと思います。動いていない。

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 に答える