2011-12-14 17 views
1

テキストボックスのデータをデータベースに挿入しようとしていますが、例外が表示されます。ASP.Netテキストボックスからデータベースにデータを挿入します

例外の詳細:System.Data.SqlClient.SqlException: 'test'の近くに構文が正しくありません。

いくつかの詳細でも、私は自分のコードを提示する前に: 私のデータベースは呼ば:ユーザー と私のような列があります:「姓」を、「姓」等...

私のテーブルのデータが呼び出さ 作品

保護無効Register_Click(オブジェクト送信者、EventArgsの電子) { SqlConnectionオブジェクトの接続=新しいSqlConnectionオブジェクト( "データソース= MICROSOF-58B8A5 \ SQL_SERVER_R2;初期カタログ=作品;統合セキュリティ=真");

 connection.Open(); 
     //FirstName*********** 
     string firstName = FirstNameTextBox.Text; 
     string sqlquery = ("INSERT INTO [Users] (FirstName) VALUES (' " +FirstNameTextBox.Text + " ' "); 

     SqlCommand command = new SqlCommand(sqlquery , connection); 
     command.Parameters.AddWithValue("FirstName", firstName); 
     //LastName************ 
     string lastName = LastNameTextBox.Text; 
     sqlquery = ("INSERT INTO [Users] (LastName) VALUES (' " + LastNameTextBox.Text+ " ' "); 
     command.Parameters.AddWithValue("LastName", lastName); 
     //Username************* 
     string username = UsernameTextBox.Text; 
     sqlquery = ("INSERT INTO [Users] (Username) VALUES (' " + UsernameTextBox.Text+ " ' "); 
     command.Parameters.AddWithValue("UserName", username); 
     //Password************* 
     string password = PasswordTextBox.Text; 
     sqlquery = ("INSERT INTO [Users] (Password) VALUES (' " + PasswordTextBox.Text + " ' "); 
     command.Parameters.AddWithValue("Password", password); 
     if (PasswordTextBox.Text == ReTypePassword.Text) 
     { 
      command.ExecuteNonQuery(); 
     } 
     else 
     { 
      ErrorLabel.Text = "Sorry, You didnt typed your password correctly. Please type again."; 
     } 

     connection.Close(); 
    } 

答えて

5

いずれかを使用したクエリおよび使用@ParamName

string sqlquery = "INSERT INTO [Users] (FirstName,LastName,UserName,Password) VALUES (@FirstName,@LastName,@UserName,@Password)"; 
    SqlCommand command = new SqlCommand(sqlquery , connection); 

    //FirstName*********** 
    string firstName = FirstNameTextBox.Text; 
    command.Parameters.AddWithValue("FirstName", firstName); 
    //LastName************ 
    string lastName = LastNameTextBox.Text;  
    command.Parameters.AddWithValue("LastName", lastName); 
    //Username************* 
    string username = UsernameTextBox.Text;  
    command.Parameters.AddWithValue("UserName", username); 
    //Password************* 
    string password = PasswordTextBox.Text;  
    command.Parameters.AddWithValue("Password", password); 

    ........... 
+1

これらのパラメータは、危険なSQLインジェクション攻撃を回避します。 – dolphy

+0

感謝! それは動作します! – thormayer

0

問題は、奇妙なSQL命令を作成していることのようです。実際の値は INSERT INTO [ユーザー](名)VALUES( '(theValue)') です。残りの値(姓など)は追加していません。クエリの残りのパラメータは含まれていないため、残りのコードは何も行いません。

関連する問題