我想使用SqlDataAdapter将一行插入数据库。我在CustomerOrders数据库中有两个表(Custormers和Orders),有上千条记录。我想要创建一个GUI (TextBoxes),以便将新的客户和订单添加到数据库中到它们各自的表中。
我想通常遵循的方法是
dataAdapter = new SqlDataAdapter (sqlQuery, conn);
dataSet = new DataSet();
da.Fill(dataSet);现在从文本框(或使用DataBinding)中获取值,将新行添加到dataSet中并调用
da.Update(dataSet);但问题是,为什么首先我要使用dataSet (da.Fill,dataSet)将所有其他记录提取到dataSet中?我只想再加一张新唱片。
为此,我要做的是在DataSet中创建数据库的架构。就像这样:
DataSet customerOrders = new DataSet("CustomerOrders");
DataTable customers = customerOrders.Tables.Add("Customers");
DataTable orders = customerOrders.Tables.Add("Orders");
customers.Columns.Add("CustomerID", Type.GetType("System.Int32"));
customers.Columns.Add("FirstName", Type.GetType("System.String"));
customers.Columns.Add("LastName", Type.GetType("System.String"));
customers.Columns.Add("Phone", Type.GetType("System.String"));
customers.Columns.Add("Email", Type.GetType("System.String"));
orders.Columns.Add("CustomerID", Type.GetType("System.Int32"));
orders.Columns.Add("OrderID", Type.GetType("System.Int32"));
orders.Columns.Add("OrderAmount", Type.GetType("System.Double"));
orders.Columns.Add("OrderDate", Type.GetType("System.DateTime"));
customerOrders.Relations.Add("Cust_Order_Rel", customerOrders.Tables["Customers"].Columns["CustomerID"], customerOrders.Tables["Orders"].Columns["CustomerID"]); 我使用DataBinding将这些列绑定到相应的文本框。现在我糊涂了!我接下来该怎么办?如何使用Insert命令?因为我没有给出任何dataAdapter.SelectCommand,所以我想dataAdapter.Update()不会起作用。请提出正确的方法。
发布于 2009-10-27 14:17:47
使用"0 = 1“筛选器设置select命令,并使用SqlCommandBuilder,以便自动为您生成insert命令。
var sqlQuery = "select * from Customers where 0 = 1";
dataAdapter = new SqlDataAdapter(sqlQuery, conn);
dataSet = new DataSet();
dataAdapter.Fill(dataSet);
var newRow = dataSet.Tables["Customers"].NewRow();
newRow["CustomerID"] = 55;
dataSet.Tables["Customers"].Rows.Add(newRow);
new SqlCommandBuilder(dataAdapter);
dataAdapter.Update(dataSet);发布于 2009-10-27 14:11:19
您可以用一个空集填充dataSet,例如:
da = new SqlDataAdapter ("SELECT * FROM Customers WHERE id = -1", conn);
dataSet = new DataSet();
da.Fill(dataSet);然后添加行并调用update。
不过,对于这种情况,最好不要使用SqlDataAdapter。相反,直接使用SqlCommand对象进行插入。(更好的方法是使用LINQ或任何其他ORM)
发布于 2012-11-03 07:29:57
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=test;Integrated Security=True");
SqlDataAdapter da=new SqlDataAdapter("Insert Into Employee values("+textBox1.Text+",'"+textBox2.Text+"','"+textBox3.Text+"',"+textBox4.Text+")",con);
DataSet ds = new DataSet();
da.Fill(ds);我得做第一次。你可以试试。效果很好。
https://stackoverflow.com/questions/1631054
复制相似问题