2013-01-15 3 views
0

ASP.net/C#에서 내 프로그램에 첨부 된 sql 데이터베이스에 데이터를 추가하는 데 약간의 문제가 있습니다. 여기에 코드입니다 :데이터베이스의 데이터 행에 데이터 추가 C#

DataRow drow = ds.Tables["TableName"].NewRow(); 

안내하십시오 : 심지어

string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["sqlconnection"].ConnectionString; 


      SqlConnection cnn = new SqlConnection(ConnectionString); 

      cnn.Open(); 
      SqlCommand cmd = new SqlCommand(); 
      cmd.CommandText = "select Id from TableName"; 
      cmd.Connection = cnn; 
      SqlDataAdapter da = new SqlDataAdapter(); 
      da.SelectCommand = cmd; 
      DataSet ds = new DataSet(); 
      da.Fill(ds, " TableName "); 
      SqlCommandBuilder cb = new SqlCommandBuilder(da); 

      DataRow drow = ds.Tables["TableName"].NewRow(); 
drow["Id"] = TextBox1.Text; 
ds.Tables["TableName "].Rows.Add(drow); 

      da.Update(ds, " TableName "); 
      string script = @"<script language=""javascript""> 
     alert('Information have been Saved Successfully.......!!!!!.'); 
     </script>;"; 
      Page.ClientScript.RegisterStartupScript(this.GetType(), "myJScript1", script); 

내가 텍스트 상자에 임의의 정수 값을 입력, 그것은 코드 인스턴스로 설정되지 않은 객체 오류 메시지가 표시 . 감사합니다. .

답변

0

이것은 데이터를 삽입하는 아주 나쁜 방법입니다. Entity Framework 또는 Linq2Sql을 보셨습니까? 또는 표준 SqlCommand를 사용하고 CommandText를 직접 설정할 수도 있습니다.

이러한 것들이 더 깨끗한 해결책을 제공합니다.

예는 : ADO.NET과 함께 (SQLite는 연결) :

var conn = new SQLiteConnection(string.Format(Constants.SQLiteConnectionString, "db.db3")); 
conn.Open(); 
using (SQLiteTransaction trans = conn.BeginTransaction()) { 
    using (var cmd = conn.CreateCommand()) { 
     cmd.CommandText = "INSERT INTO TableName (Id) VALUES (@Id)"; 
     cmd.Parameters.AddWithValue("@Id", someTextVariable); 
     cmd.ExecuteNonQuery(); 
    } 
} 
+0

안녕, 응답에 대한 감사합니다. 그건 그렇고, 데이터 삽입 방법을 알려주시겠습니까? 나는이 방법을 고집하지 않고 있지만, 내가 의미하는 바를 이해한다면 여기에 자신의 방식을 제공 할 수 있습니다. 감사합니다. – Trend

+0

내가 추가 한 코드 샘플과 Entity Framework의 조합을 사용하고 싶습니다. 삽입물에 Entity Framework를 사용하지 않는 이유는 복잡한 개체 그래프에 쉽게 혼동되기 쉽기 때문입니다. – Echilon