-1

シンプルINSERT INTO C#アプリケーションを使用しているSQL Server。ExecuteNonQuery()が動作しません。

cmd.ExecuteNonQuery(); 

プログラムはエラーや破損はしませんが、何も起こりません。私は、dev/productionデータベースの不具合の可能性を探ってきましたが、そうではありません。

以下のコードは、[保存]ボタンのクリックです。データベースオブジェクトの名前と接続パラメータDataSourceTableCatalogなどは、逐語ではなく一般化されています。

string val1 = firstTextBox.Text; 
string val2 = secondTextBox.Text; 
string val3 = thirdTextBox.Text; 

SqlConnection conn = new SqlConnection(@"Data Source=DataSource;Initial Catalog=Catalog;User ID=username;Password=password"); 
string sql = "INSERT INTO dbo.Table(col1, col2, col3) VALUES (" + val1 + "," + val2 + "," + val3 + "); "; 

try 
{ 
    conn.Open(); 
    SqlCommand cmd = new SqlCommand(sql, conn); 
    cmd.ExecuteNonQuery(); 
} 
catch (System.Data.SqlClient.SqlException ex) 
{ 
    string msg = "Insert Error:"; 
    msg += ex.Message; 
} 
finally 
{ 
    conn.Close(); 
} 

ありがとうございました!

+7

あなたの問題に加えて、あなたのコードに存在する巨大なSQLインジェクションの脆弱性を修正することを検討しましたか? –

+1

アプリケーションを追跡し、文字列 'sql'がどのように設定されているかを見せてください。 –

+3

_int rowsAffected = cmd.ExecuteNonQuery()_を追加し、rowsAffectedの値を教えてください。 – Steve

答えて

0

コードをそのままコピーして貼り付けた場合、という接続文字列は無効です。

Data Source=DataSource;Initial Catalog=Catalog;User ID=username;Password=password

あなたがDataSourceInitialCatalogUserID、およびPassword値に適切な値を入力する必要があります。

また、実際にTableという名前のテーブルがない限り、クエリ自体は間違っています。

また、リソースの適切な処分のためのusing文(IDisposableを実装するクラス)についてのパラメータ化されたSQLクエリ(Google検索)を調べる必要もあります。

+0

これが問題だった場合、例外が発生し、OPが言うNO ERRORS – Steve

+0

データソースの名前が 'datasource'など*可能であると思われます.OPはいくつかのことについて不明です。 –

+0

@Steve彼はどんな 'System.Data.SqlClient.SqlException'エラーも食っています...もちろんアプリケーションはクラッシュしません。 –

関連する問題