[SQL] C #을 통해 ado.net를 사용하여 SQL Server 데이터베이스에 값을 삽입
SQLC #을 통해 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.나는 의견에 말했듯이 - 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.쉼표를 제거
쉼표를 제거
... Gender,Contact, " + ") VALUES ... ^-----------------here
-
==============================
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.
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.당신은 마지막 쉼표를 제거해야하고 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);
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
'SQL' 카테고리의 다른 글
[SQL] 안드로이드 이클립스 디버그 모드에서 SQL 데이터베이스를 보는 방법 (0) | 2020.06.07 |
---|---|
[SQL] 내가 키 생성 BIGINT를 배출하면 어떻게됩니까? 어떻게 그것을 처리하기 위해? (0) | 2020.06.07 |
[SQL] 왜 집계 함수는 where 절에서 허용되지 않습니다 (0) | 2020.06.07 |
[SQL] 내가 SUM을 사용하는 방법 () OVER () (0) | 2020.06.07 |
[SQL] 방법에 대한 오라클의 COMMIT 트리거를 정의? (0) | 2020.06.07 |