2011-10-19 3 views
-1

옵션 1 : DB에 데이터를 삽입하는우리가 sqlcommandbuilder를 사용하는 이유는 무엇입니까?

SqlCommand cmd = new SqlCommand("INSERT INTO table_name(eid,eName,Dept) values('"+ textBox1.Text +"','"+ textBox2.Text +"','"+ Textbox3.Text +"'", con); 

cmd.ExecuteNonQuery(); 

옵션 2 : 우리는 데이터를 삽입 할 SqlCommandBuilder를 사용하는 이유

SqlDataAdapter sqlda = new SqlDataAdapter("SELECT * FROM table_name",con); 

SqlCommandBuilder sqlcomb = new SqlCommandBuilder(sqlda); 

DataSet dset = new DataSet("table1"); 

sqlda.Fill(dset,"table1"); 

DataRow drow = dset.Tables["table1"].NewRow(); 
drow["eid"] = textBox1.Text.ToString(); 
drow["eName"] = textBox2.Text.ToString(); 
drow["Dept"] = textBox3.Text.ToString(); 

dset.Tables["table1"].Rows.Add(drow); 

sqlda.Update(dset, "table1"); 

내 질문은 내가 옵션 1 같은 느낌이다가 .. 삽입하는 가장 좋은 방법입니다 ? SqlCommandBuilder의 사용법은 무엇입니까? SqlCommandBuilder을 사용하여 데이터를 삽입 할 때의 이점은 무엇입니까? 귀하의 제안 pl12

답변

1

나는 항상 옵션 3 : 매개 변수화 된 쿼리에 갈 것입니다 !!

함께 SQL 문 연결할하지 마십시오 - 당신이 경우 NEVER

을 - 때문에 (그들은 모두 SQL 주입 공격으로부터 안전하고, 더 효율적 what will happen eventually.....

참조 단일 쿼리 계획은 여러 매개 변수 값을 사용하여이 매개 변수를 호출하면 다시 사용할 수 있습니다.)

string insertStmt = "INSERT INTO dbo.table_name(eid, eName, Dept) " + 
        "VALUES(@eid, @eName, @dept)"; 

SqlCommand cmd = new SqlCommand(insertStmt, con); 

cmd.Parameters.Add("@eid", SqlDbType.Int).Value = .......; 
cmd.Parameters.Add("@ename", SqlDbType.VarChar, 50).Value = .......; 
cmd.Parameters.Add("@dept", SqlDbType.VarChar, 100).Value = .......; 

cmd.ExecuteNonQuery(); 
,

또는 다음 옵션 4 : .NET에서 사용하기에 좋은 개체로 관계형 데이터를 얻을 수 (마지막 DataRowDataColumn과 같은 물건으로 장난 잊어 Dapper-Dot-Net 또는 Entity Framework 같은 ORM (객체 관계형 매퍼)를 사용) ??

+0

답장을 보내 주셔서 감사합니다 ... –