Tag: dataadapter

如何从MS SQL数据表中检索列默认值

我使用DataAdapter.FillSchema从MS SQL检索表的架构。 不幸的是,这不会返回列的默认值。 有没有办法以快速有效的方式检索此值作为模式的一部分,因为我需要检查数百个表? 谢谢!

.NET DataSet.HasChanges错误地为false

有没有人遇到ds.hasChanges()是假的,尽管ds在断点检查时显然有变化? 我已经看了很长一段时间,我看不出有什么问题…… // connectionstring and command has been set DataSet ds = new DataSet(); BindingSource myBindingSource = new BindingSource(); SqlDataAdapter dataAdapter1 = new SqlDataAdapter(); dataAdapter1.Fill(ds, “Data”); myBindingSource.DataSource = ds.Tables[“Data”]; // then changes made to the datatable on a windows form using bindingnavigator ds.HasChanges(DataRowState.Modified); // is false 现在,当我在使用HasChanges的行之后设置断点并使用DataSet Visualizer时,我可以看到DataSet实际上已经改变,但HasChanges仍然返回false。 我敢肯定我错过了那个显而易见的……有人能看出我做错了什么吗? 干杯

dataAdapter .Fill和.Update的比较

我一直在阅读MSDN资源和几个论坛,但仍然不明白这两个dataAdapter.Fill()和dataAdapter.Update()之间有什么区别,我试图用它们来从我的程序更新数据库并且它有效,但是当我尝试删除update()函数时,它仍然可以正常工作,因此我认为它没用。 有人可以澄清一下吗? 编辑:这是我删除的代码: string connString = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Public\\Documents\\inventorySystem\\branches\\Database\\inventorySystemDatabase.accdb”; string query = “DELETE FROM Product WHERE product_id=” + productDataGridView[1, e.RowIndex].Value.ToString(); OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, connString); OleDbCommandBuilder deleteBuilder = new OleDbCommandBuilder(dAdapter); DataTable deleteTable = new DataTable(); dAdapter.Update(deleteTable); – 我必须做一个额外的select命令来更新datagridview –

如何在更改数据库后保存DataSet?

如果我有一个名为myDs的DataSet,我通过循环中的直接访问来编辑其中的字段,如下所示: for (int i = 0; i < myDS.Tables[TableName].Rows.Count; i++) { //some function or web method to get the id value of the record being updated int n = getNewNumber(); //updating the dataset record according to some condition if (n == 0) { myDS.Tables[TableName].Rows[i]["id"] = n; myDS.Tables[TableName].Rows[i]["description"] = "some data"; } else { myDS.Tables[TableName].Rows[i]["id"] = […]

使用TableAdapter重新加载数据

private void UserList_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the ‘workOrdersDataSet.users’ table. You can move, or remove it, as needed. this.usersTableAdapter.Fill(this.workOrdersDataSet.users); } 如果以其他forms进行更改,如何重新加载数据? (最好是自动不使用刷新按钮)? 我正在使用WinForms,后端是Access 2007。 使用Designer将数据绑定到Datagrid

使用MySqlDataAdapter更新不起作用

我正在尝试使用MySqlDatAdapter来更新MySql表。 但是,表永远不会更新! 我以前用SQL服务器做过这个。 我的代码中缺少哪些特定于MySql的东西? DataTable myTable = new DataTable(“testtable”); MySqlConnection mySqlCon = new MySqlConnection(ConfigurationManager.ConnectionStrings[“DBConStr”].ConnectionString); MySqlCommand mySqlCmd = new MySqlCommand(“SELECT * FROM testtable WHERE Name = ‘Tom'”); mySqlCmd.Connection = mySqlCon; MySqlDataAdapter adapter = new MySqlDataAdapter(mySqlCmd); MySqlCommandBuilder myCB = new MySqlCommandBuilder(adapter); adapter.UpdateCommand = myCB.GetUpdateCommand(); mySqlCon.Open(); adapter.Fill(myTable); myTable.Rows[0][“Name”] = “Was Tom”; myTable.AcceptChanges(); adapter.Update(myTable); mySqlCon.Close(); 谢谢

在绑定的DataGridView中将DataGridViewColumn更改为DataGridViewComboBoxColumn

我有一个绑定到DataTable的DataGridView,我使用SQLiteDataAdapter来更新一个SQLite数据库。 我正在尝试将其中一个列设为DataGridViewComboBoxColumn,但尽管我可以在其上放置项并更改其单元格值,但我无法通过DataAdapter更新它。 加载DataGridView后我正在这样做: DataGridViewComboBoxColumn cbCol = new DataGridViewComboBoxColumn(); dataGridView1.Columns.Insert(2, cbCol); dataGridView1.Columns[2].HeaderText = dataGridView1.Columns[3].HeaderText; dataGridView1.Columns[3].Visible = false; string[] cbList = new[] {“item1″,”item2”}; foreach (string str in cbList) { cbCol.Items.Add(str); } for (int i = 0 ; i<= dataGridView1.Rows.Count – 1; i++) { dataGridView1.Rows[i].Cells[2].Value = dataGridView1.Rows[i].Cells[3].Value; } 问题是ComboBoxColumn没有绑定到DataTable,我必须在运行DataAdapter.Update之前检查更改并修改隐藏列。 有什么方法可以避免这种情况吗? 完美的场景将是这样的: private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e) { […]

c#DataSet.Fill Firebird 2.5填补了可怕的性能问题

备注我完全重写了问题,因为在探索选项和获得见解时,我意识到我的问题的根源完全不是我想的。 我使用Firebird作为数据库引擎和标准.Net提供程序(v.5.11.0)使用以下代码获取数据: // myBlob1 is BLOB SUB_TYPE 1 (text field) with some empty, but some // VERY long stuff (xml-content) which exceeds VARCHAR(32765), but I removed // those before performing my tests!!! var tick = Stopwatch.StartNew(); DataTable dataTable = new DataTable(); DbLive.Open(); FbCommand command = new FbCommand(“SELECT myBlob FROM MY_TABLE”, DbLive); try { dataTable.BeginLoadData(); FbDataAdapter […]

使用数据适配器更新记录时出现并发错误

这是我的表: 学生 : StudentId int PK autoincrement,Name varchar(20) 当我尝试更新上次添加的记录时,我发现错误: 错误 : Concurrency violation: the UpdateCommand affected 0 of the expected 1 records. 这是我的代码: using (var connection = new SqlConnection(“MyConnectionstring”)) { connection.Open(); SqlDataAdapter adapter = new SqlDataAdapter(); SqlCommandBuilder builder = new SqlCommandBuilder(adapter); adapter.SelectCommand = new SqlCommand(“select * from Student”, connection); DataTable dt = new DataTable(); adapter.Fill(dt); […]

OracleDataAdapter,Fill方法挂起,如何处理连接终止/删除/删除?

我有一个C#程序连接到远程服务器来查询数据。 数据非常大,因此查询大约需要2分钟才能完成。 在这2分钟的窗口期间,互联网瘫痪了。 这导致作业无法完成程序停留在获取数据例程中。 它建立了连接,但在选择查询期间它被切断了。 将命令超时设置为30秒不起作用。 遇到此错误时,我需要查询失败,因为程序可以处理失败但无法处理卡住。 谢谢! 更新:包含的代码 OracleConnection connection = new OracleConnection(connectionstring); OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(new OracleCommand(query, connection)); oracleDataAdapter.SelectCommand.CommandTimeout = 30; DataSet dataSet = new DataSet(); try { oracleDataAdapter.Fill(dataSet, table); //Hangs on this line when connection is lost return dataSet; } catch { throw; } finally { dataSet.Dispose(); oracleDataAdapter.Dispose(); } 再次更新: 我需要做的是处理这种情况,因为我不想要一个悬空过程。 […]