C# 如何将DataTable一次写入数据库 public void UpdateDataTable(DataTable DT)
{
SqlConnection Con = GetConnection();
string strSQL = "select * from orderitems" ;
if (Con.State == ConnectionState.Closed)
{
Con.Open();
}
try
{
SqlCommand Cmd = new SqlCommand(strSQL, Con);
SqlDataAdapter Dad = new SqlDataAdapter(Cmd);
Dad.Update(DT);
Con.Close();
}
catch (SqlException ex)
{
throw ex;
}
}执行程序后数据并没有插入数据库,请帮忙看看代码该如何修改
{
SqlConnection Con = GetConnection();
string strSQL = "select * from orderitems" ;
if (Con.State == ConnectionState.Closed)
{
Con.Open();
}
try
{
SqlCommand Cmd = new SqlCommand(strSQL, Con);
SqlDataAdapter Dad = new SqlDataAdapter(Cmd);
Dad.Update(DT);
Con.Close();
}
catch (SqlException ex)
{
throw ex;
}
}执行程序后数据并没有插入数据库,请帮忙看看代码该如何修改
解决方案 »
- c# 第三方 美化 winform窗体
- 页面按钮的显示无法控制,怎么办?
- C#时间格式转换问题(12小时制和24小时制)
- C#中,有關向TreeView加載多層結構數據問題
- C#代码帮我解答一次啊吧,我越看越糊涂
- 在C#的winform程序中有用到SQLServer2005,在客户端上安装使用时需要安装SQLServer吗?
- c#要学到哪种程度才可以工作,一般要学多长时间啊
- C#的可执行文件(.exe)和组件(.dll)必须放在同一个目录吗?
- 使用DevExpress 中的 ComboBoxEdit 如何让绑定数?只能选择不能在里面输入数据?
- 如何在程序运行的时候把菜单的子菜单设置为隐藏,需要设置那个属性,谢谢
- 方法重写?
- C#泛型与数组问题
我是要把内存中的DataTable直接插入到表OrderItems中,请问该如何写呢?
内存中的DataTable 结构和表OrderItems结构是一样的!
1 调用DataTable.Rows.Add(DataRow r)方法,r将被系统自动标记为Added;
2 对DataTable.Rows集合中的DataRow r调用 SetAdded方法。
DataRow Row = DT.NewRow();
Row.SetAdded();
DT.Rows.Add(Row );
这样写会报错,请问该在哪里设定 SetAdded()呢?
1 DataRow Row = DT.NewRow();
Row.ID = idvalue;// 一定要为所有不允许为NULL的field赋一个值
//赋值结束
DT.Rows.Add(Row);2 foreach(DataRow row in DT.Rows){
if(row.RowState != DataRowState.Added){
row.SetAdded();
}
}
建议你用第一种方法,第二种方法是手动处理,在特殊情况下才比较合适。
public void InsertTable(DataTable table1)
{ string strInsert = "insert into Number values (@value)";
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["connStr"]);
conn.Open();
SqlCommand com = new SqlCommand(strInsert, conn);
SqlParameter p1 = new SqlParameter("@value", SqlDbType.VarChar);
com.Parameters.Add(p1);
for (int i = 0; i < table1.Rows.Count; i++)
{
DataRow row = table1.Rows[i];
p1.Value = row[1].ToString();
com.ExecuteNonQuery();
}
conn.Close(); }
请帮忙看看这些代码,DataTable仍不能插入数据库
DataTable插入行:
DataRow Row = DT.NewRow();
Row["Input_Time"]='2004';
Row["Location_ID"]='dfd0';
///Row.SetAdded();
//////////////////////////////需要设定Row 的什么属性呢,Row.ID这个好像是没有的
DT.Rows.Add(Row ); 写入数据库
strSQL="select * from tblName";
SqlCommand Cmd = new SqlCommand(strSQL, Con);
SqlDataAdapter Dad = new SqlDataAdapter();
Dad.InsertCommand = Cmd;
SqlCommandBuilder Builder = new SqlCommandBuilder(Dad);
Dad.Update(DT);
DataAdapter只是一个适配器,它必须有相应的SqlCommand来为其工作,并且有什么样的SqlCommand就执行什么样的工作。
DataAdapter.SelectCommand用于获取数据,因此它的CommandText应该是select语句;
DataAdapter.InsertCommand用于插入数据,因此它的CommandText应该是insert语句;
DataAdapter.DeleteCommand用于删除数据,因此它的CommandText应该是delete语句;
DataAdapter.UpdateCommand用于更新数据,因此它的CommandText应该是update语句;因此你的代码应该这样写:
SelectSQL="select * from tblName";
SqlCommand SelectCmd = new SqlCommand(SelectSQL, Con); InsertSQL="insert into tblName (Input_Time,Location_ID) values (@Input_Time,@Location_ID)";
SqlCommand InsertCmd = new SqlCommand(InsertSQL, Con);
InsertCmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Input_Time",System.Data.SqlDbType.Time));
InsertCmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Location_ID",System.Data.SqlDbType.NVarChar));SqlDataAdapter Dad = new SqlDataAdapter();
Dad.SelectCommand = SelectCmd;
Dad.InsertCommand = InsertCmd;
Dad.Update(DT);
随便多少表,只要你的sql能插入成功就行。