0

SQLに値を数回挿入しましたが、次のコードで問題に直面しています

 protected void Button1_Click(object sender, EventArgs e)
    {

        string connstring = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;
        con = new SqlConnection(connstring);

        string name = txtName.Text;
        string user = txtUser.Text;
        string password = txtPwd.Text;
        string email = txtEmail.Text;
        long phone=Convert.ToInt64(txtPhone.Text);
        string address = txtAddr.Text;
        string city = txtCity.Text;
        string gender = RadioButtonList1.SelectedItem.ToString();
        string dob = txtDOB.Text;
        string qualification = DropDownList1.SelectedItem.ToString();
        string skills = CheckBoxList1.SelectedItem.ToString();

        string insertstring = " insert into JobRegisteration values ("+name+","+user+","+password+","+email+","+phone+","+address+","+city+","+gender+","+dob+","+qualification+","+skills+")";
        cmd = new SqlCommand(insertstring,con);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();

    }
}

asp.netページからこれに値を挿入すると、次のエラーが発生します。

Exception Details: System.Data.SqlClient.SqlException: Invalid column name 'sbip'.
Invalid column name 'tttt'.
Invalid column name 'ttt'.
The multi-part identifier "tttttt@sss.ss" could not be bound.
Invalid column name 't'.
Invalid column name 'tttt'.
Invalid column name 'Male'.
Invalid column name 'MCA'.
Invalid column name 'C#'.

tttt、male mca などは、asp ページから渡される値です。

ありがとう!

4

5 に答える 5

3

以下のようなパラメーターとusingステートメントを使用します

string connstring = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;
// change this select statement based on your exact column names 
string insertstring = "insert into JobRegisteration ([Name] ,[User] ,[Password] ,[Email] ,[Phone],[Address] ,[City] ,[Gender] ,[Dob] ,[Qualification] ,[Skills]) values (@name ,@user ,@password ,@email ,@phone,@address ,@city ,@gender ,@dob ,@qualification ,@skills)";

using (var con = new SqlConnection(connstring))
using(var cmd = new SqlCommand(insertstring, con))
{
    cmd.Parameters.AddWithValue("@name", txtName.Text);
    cmd.Parameters.AddWithValue("@user", txtUser.Text);
    // give all the parameters..
    con.Open();
    cmd.ExecuteNonQuery();
}
于 2013-08-15T06:57:44.097 に答える
2

挿入された値をラップする必要があります。'そうしないと、データベースはそれらを列名として扱います。

string insertstring = " insert into JobRegisteration values ('"+name+"','"+user+"','"+password+"','"+email+"','"+phone+"','"+address+"','"+city+"','"+gender+"','"+dob+"','"+qualification+"','"+skills+"')";

また、他の人が示唆しているように、そのような問題を回避するには、 Prepared Statementsに頼る必要があります (とりわけ)。

于 2013-08-15T06:48:13.367 に答える
1

あなたの問題には多くの解決策があります。

1) このフォーマットに適合するようにしてください:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

2) haim770 が言ったように、値を ' で囲みます。

3) SQL パラメータの方法を使用する

4)またはLinqを見てください。これは、データベースを操作するための本当に簡単な方法です

于 2013-08-15T06:52:42.340 に答える
1

'クエリに一重引用符を追加する必要があります。

string insertstring = " insert into JobRegisteration values ('"+name+"','"+user+"','"+password+"','"+email+"','"+phone+"','"+address+"','"+city+"','"+gender+"','"+dob+"','"+qualification+"','"+skills+"')";
于 2013-08-15T06:53:24.317 に答える