복붙노트

[SQL] C #을 통해 ado.net를 사용하여 SQL Server 데이터베이스에 값을 삽입

SQL

C #을 통해 ado.net를 사용하여 SQL Server 데이터베이스에 값을 삽입

나는 테이블 [REGIST]에 값을 삽입하는 간단한 프로그램을 만들었습니다,하지만 난 오류가 계속

() cmd.ExecuteNonQuery에서 ;:

 private void button1_Click(object sender, EventArgs e)
 {
      SqlConnection cn = new SqlConnection("Data Source=DELL-PC;initial catalog=AdventureWorks2008R2 ; User ID=sa;Password=sqlpass;Integrated Security=SSPI;");

      SqlCommand cmd = new SqlCommand("INSERT INTO dbo.regist (" + " FirstName, Lastname, Username, Password, Age, Gender,Contact, " + ") VALUES (" + " @textBox1.Text, @textBox2.Text, @textBox3.Text, @textBox4.Text, @comboBox1.Text,@comboBox2.Text,@textBox7.Text" + ")", cn);

      cn.Open();
      cmd.ExecuteNonQuery();
      cn.Close();
}

나는이 새로운 오전 그리고 난 정말 혼란 스러워요.

해결법

  1. ==============================

    1.나는 의견에 말했듯이 - NEVER EVER CONCATENATE 함께 SQL 문 자신을 - 당신은 항상 당신의 쿼리에서 매개 변수를 사용해야합니다.

    나는 의견에 말했듯이 - NEVER EVER CONCATENATE 함께 SQL 문 자신을 - 당신은 항상 당신의 쿼리에서 매개 변수를 사용해야합니다.

    또한 : 나는 데이터를 삽입 할 실제 코드에서 클릭 이벤트 처리기를 분리하는 것이 좋습니다.

    난 당신의 코드를 다시 작성 것이다 그래서 같은 것을 할 수

    웹 페이지의 코드 숨김 파일에서 (yourpage.aspx.cs)

    private void button1_Click(object sender, EventArgs e)
    {
          string connectionString = "Data Source=DELL-PC;initial catalog=AdventureWorks2008R2 ; User ID=sa;Password=sqlpass;Integrated Security=SSPI;";
    
          InsertData(connectionString,
                     textBox1.Text.Trim(),  -- first name
                     textBox2.Text.Trim(),  -- last name
                     textBox3.Text.Trim(),  -- user name
                     textBox4.Text.Trim(),  -- password
                     Convert.ToInt32(comboBox1.Text),  -- age
                     comboBox2.Text.Trim(), -- gender
                     textBox7.Text.Trim() );  -- contact
    }
    

    다른 코드에서, (예를 들어, databaselayer.cs) :

    private void InsertData(string connectionString, string firstName, string lastname, string username, string password
                            int Age, string gender, string contact)
    {
        // define INSERT query with parameters
        string query = "INSERT INTO dbo.regist (FirstName, Lastname, Username, Password, Age, Gender,Contact) " + 
                       "VALUES (@FirstName, @Lastname, @Username, @Password, @Age, @Gender, @Contact) ";
    
        // create connection and command
        using(SqlConnection cn = new SqlConnection(connectionString))
        using(SqlCommand cmd = new SqlCommand(query, cn))
        {
            // define parameters and their values
            cmd.Parameters.Add("@FirstName", SqlDbType.VarChar, 50).Value = firstName;
            cmd.Parameters.Add("@Lastname", SqlDbType.VarChar, 50).Value = lastName;
            cmd.Parameters.Add("@Username", SqlDbType.VarChar, 50).Value = userName;
            cmd.Parameters.Add("@Password", SqlDbType.VarChar, 50).Value = password;
            cmd.Parameters.Add("@Age", SqlDbType.Int).Value = age;
            cmd.Parameters.Add("@Gender", SqlDbType.VarChar, 50).Value = gender;
            cmd.Parameters.Add("@Contact", SqlDbType.VarChar, 50).Value = contact;
    
            // open connection, execute INSERT, close connection
            cn.Open();
            cmd.ExecuteNonQuery();
            cn.Close();
        }
    }
    

    이 같은 코드 :

  2. ==============================

    2.쉼표를 제거

    쉼표를 제거

    ... Gender,Contact, " + ") VALUES ...
                      ^-----------------here
    
  3. ==============================

    3.코드는 "C #을 통해 ado.net를 사용하여 SQL Server 데이터베이스에 값을 삽입"을 위해 작동합니다 다음

    코드는 "C #을 통해 ado.net를 사용하여 SQL Server 데이터베이스에 값을 삽입"을 위해 작동합니다 다음

    // Your Connection string
    string connectionString = "Data Source=DELL-PC;initial catalog=AdventureWorks2008R2 ; User ID=sa;Password=sqlpass;Integrated Security=SSPI;";
    
    // Collecting Values
    string firstName="Name",
        lastName="LastName",
        userName="UserName",
        password="123",
        gender="Male",
        contact="Contact";
    int age=26; 
    
    // Query to be executed
    string query = "Insert Into dbo.regist (FirstName, Lastname, Username, Password, Age, Gender,Contact) " + 
                       "VALUES (@FN, @LN, @UN, @Pass, @Age, @Gender, @Contact) ";
    
        // instance connection and command
        using(SqlConnection cn = new SqlConnection(connectionString))
        using(SqlCommand cmd = new SqlCommand(query, cn))
        {
            // add parameters and their values
            cmd.Parameters.Add("@FN", System.Data.SqlDbType.NVarChar, 100).Value = firstName;
            cmd.Parameters.Add("@LN", System.Data.SqlDbType.NVarChar, 100).Value = lastName;
            cmd.Parameters.Add("@UN", System.Data.SqlDbType.NVarChar, 100).Value = userName;
            cmd.Parameters.Add("@Pass", System.Data.SqlDbType.NVarChar, 100).Value = password;
            cmd.Parameters.Add("@Age", System.Data.SqlDbType.Int).Value = age;
            cmd.Parameters.Add("@Gender", System.Data.SqlDbType.NVarChar, 100).Value = gender;
            cmd.Parameters.Add("@Contact", System.Data.SqlDbType.NVarChar, 100).Value = contact;
    
            // open connection, execute command and close connection
            cn.Open();
            cmd.ExecuteNonQuery();
            cn.Close();
        }    
    
  4. ==============================

    4.

    private void button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection();
        con.ConnectionString = "data source=CHANCHAL\SQLEXPRESS;initial catalog=AssetManager;user id=GIPL-PC\GIPL;password=";
        con.Open();
        SqlDataAdapter ad = new SqlDataAdapter("select * from detail1", con);
        SqlCommandBuilder cmdbl = new SqlCommandBuilder(ad);
        DataSet ds = new DataSet("detail1");
        ad.Fill(ds, "detail1");
        DataRow row = ds.Tables["detail1"].NewRow();
        row["Name"] = textBox1.Text;
        row["address"] =textBox2.Text;
        ds.Tables["detail1"].Rows.Add(row);
        ad.Update(ds, "detail1");
        con.Close();
        MessageBox.Show("insert secussfully"); 
    }
    
  5. ==============================

    5.당신은 마지막 쉼표를 제거해야하고 nrodic는 명령이 올바르지 않습니다 말했다.

    당신은 마지막 쉼표를 제거해야하고 nrodic는 명령이 올바르지 않습니다 말했다.

    당신은 다음과 같이 변경한다 :

    SqlCommand cmd = new SqlCommand("INSERT INTO dbo.regist (" + " FirstName, Lastname, Username, Password, Age, Gender,Contact " + ") VALUES (" + " textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, comboBox1.Text,comboBox2.Text,textBox7.Text" + ")", cn);
    
  6. from https://stackoverflow.com/questions/13573380/inserting-values-into-a-sql-server-database-using-ado-net-via-c-sharp by cc-by-sa and MIT license