C# DataSet, DataAdapter-如何改变行的状态以调用一个INSERT?
我正在尝试实现一个"保存为"按钮,以将数据获取为dataadapter.fill()的数据集中,然后插入数据库. 数据集有4个表-1个父(单行表),3个孩子.使用Foriegn Cascade删除/更新约束.我的目的是向用户询问一个新的主键(复杂),然后尝试告诉DataAdapter或DataSet将4个表中的所有行(以及后续的新表)标记为DataRowState.Added;但是datarow.setAdded()引发异常"只能在datarowstate.inchanged行上固定" 有人知道该怎么做? 也欢迎进行"保存为"的任何其他有效方法.非常感谢. 编辑: 以防万一,已经设置了数据汇编.普通插入,更新,删除和选择完美工作. 解决方案 也许这有效 row.AcceptChanges(); // sets DataRowState.Unchanged row.SetAdded();
0 2024-04-21
编程技术问答社区
来自同一数据集的多个ComboBox控件
我在Windows表单上有2个下拉列表组合,均来自同一数据集(员工列表),但它们的目的不同(项目经理/审阅者). 如果我将两个数据源设置为两个数据集,则它们既绑定到数据集,又可以串联更改. 我缺少某些内容,还是必须以编程方式读取数据集的行和列,而不是直接使用数据集? 或复制数据集? 在另一种形式上,我有几次相同的问题. 解决方案 在 bytes.com combo1.DataSource = payDS.Tables[0]; combo1.BindingContext = new BindingContext(); combo1.DisplayMember = "staff_name"; combo1.ValueMember = "staff_id"; combo2.DataSource = payDS.Tables[0]; combo2.BindingContext = new BindingContext(); combo2.DisplayMemb
0 2024-04-21
编程技术问答社区
如何将多个表读入一个数据集?
我有一个存储过程,可以返回多个表.如何执行和读取两个表? 我有这样的东西: SqlConnection conn = new SqlConnection(CONNECTION_STRING); SqlCommand cmd = new SqlCommand("sp_mult_tables",conn); cmd.CommandType = CommandType.StoredProcedure); IDataReader rdr = cmd.ExecuteReader(); 我不确定如何阅读...处理此类查询的最佳方法是什么,我猜我应该将数据读取到数据集中?最好的方法是如何做的? 谢谢. 解决方案 改编自 msdn : using (SqlConnection conn = new SqlConnection(connection)) { SqlDataAdapter adapter = new SqlDataAdapter();
0 2024-04-21
编程技术问答社区
如何使用TableAdapter进行更新?
我正在编写WindowsApplication中使用数据库的程序. 我用DataGridView显示数据库值. 目前,我希望可以通过DataGridView更新数据库,因此我编写了此代码: private void MainForm_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'databaseDataSet1.products' table. You can move, or remove it, as needed. this.productsTableAdapter1.Fill(this.databaseDataSet1.products); } private void upButton1_Click(object sender, EventArgs e) { thi
0 2024-04-21
编程技术问答社区
从数据集中完全删除一条记录
我的GridView上有一个删除按钮.单击"删除"按钮时,该行应该是 完全从会话中删除.我目前正在执行以下操作: protected void gvMainLog_RowCommand(Object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Remove") { GridViewRow rowSelect = (GridViewRow)(((Button)e.CommandSource).NamingContainer); int rowindex = rowSelect.RowIndex; DataSet ds = ((DataSet)Session["old"]); ds.Tables[0].Rows[rowindex].Delete();
0 2024-04-21
编程技术问答社区
数据集的列名和行值
我有一个数据集: DataSet ds= _ExecuteQuery(contentCmd, CommandType.Text, contentParams); // Column name foreach (DataColumn column in ds.Tables[0].Columns) { Console.WriteLine(column.ColumnName); } // Rows value foreach (DataTable dt in ds.Tables){ foreach (DataRow dr in dt.Rows){ Console.Writeline(dr.Table.Rows[0]["name"].ToString()); } } 如何检索行值和行的列名? List; 解决方案 我假设您正在寻找这样的东西: Dictionary
0 2024-04-21
编程技术问答社区
Telerik gridview : 如何在数据库变化后刷新网格视图
我正在使用C#Winform应用程序中的radgridview显示来自数据库的数据.我还通过ado.net更改数据库.问题是在我更改数据库之后,例如,通过删除一行或添加新行,更改不会出现在GridView中. 我还想提到,我已将数据库绑定到通过智能标签到GridView,当我尝试创建一个新数据集并将其分配给radgridview1.datasource时,我会有很多错误. 关于radgridview如何重新加载的任何建议是datasource? 解决方案 好吧,我自己找到了答案.尽管它仅适用于dataGridView,并且在dataListView上不起作用. 删除记录并提交对数据库的更改: radGridView1.CurrentRow.Delete(); this.yourTableAdapter.Update(yourDataSet); 另一方面,如果您添加了新记录,并且想改革列表: this.yourTableAdapter.Fill(yourDat
0 2024-04-21
编程技术问答社区
当在DB表中增加一个列时,你如何让你的数据网格视图显示变化?
我在Visual Studio中的项目中创建了一个数据集,该数据集指向我的数据库中的表格 然后将DataGridView控件绑定到它. 现在,我打开数据库,然后在数据库中的表中添加另一列. 然后,我打开数据集并更新其配置以包括更改. 然后,我想更新DataGridView,但是我无法添加新列. 我可以右键单击DataGridView所在的表格,并获取正确的表数据. 是否从表单中删除TableAdapter以及BindingSource和DataSet实例,然后尝试重新启用它,这没关系,DataGridView仍然不会让我添加新列. 有人知道发生了什么事吗? 我已经尝试了几个项目,包括VS2008和2010 Beta,而不是其他语言. 到目前为止,唯一的解决方案似乎是制作一个完全不同的数据集,但是必须有更好的方法. 预先感谢 解决方案 在 中的文件夹下 " c:\ users \ yourusername \ appdata \ local \
0 2024-04-20
编程技术问答社区
数据集到POCOs--关于DAL架构的询问
我必须很快开发一个相当大的ASP.NET MVC项目,我想对我的DAL设计发表一些意见,以确保没有任何东西会咬我,因为BL可能会变得非常复杂.有点背景:我正在使用Oracle后端工作,因此内置的LINQ到SQL已淘汰;我还需要使用生产级别的库,以便Oracle EF提供商项目已发布;最后,我无法使用任何GPL或LGPL代码(Apache,MS-PL,BSD还可以),因此NHIBERNATE/CASTLE项目已发布.我希望 - 如果可能的话 - 避免赚钱,但我更担心实施正确的解决方案.总而言之,有我的要求: Oracle后端 快速发展 (l)GPL-Free 免费 我对数据集很满意,但是我将从使用POCO作为数据集和视图之间的中介中受益.谁知道,也许在某个时候会出现另一种DAL解决方案,我将有时间将其切换出来(是的,正确).因此,虽然我可以使用Linq将数据集转换为Iqueryable,但我想拥有一个通用解决方案,因此我不必为每个类编写一个自定义查询. 我现
0 2024-04-20
编程技术问答社区
类型'string'必须是一个不可置空的值类型,以便在通用类型或方法'System.Nullable<T>'中作为参数'T'使用。
public virtual int Fill(DataSetservices.Jobs_detailsDataTable dataTable, global::System.Nullable fromdate, global::System.Nullable todate) 我在C#中的dataset.xsd中写了上面的代码,但它正在丢下错误: 错误1 类型的"字符串"必须是订单中不可删除的值类型 将其用作通用类型或方法中的参数" t" 'system.nullable' 建议我如何使用字符串,因为我想使用字符串,没有其他 解决方案 string已经是无效的,因为它是一种参考类型.您无需将其包装在Nullable中即可具有零值.不仅不需要,而且根据您收到的错误消息,甚至不是可能的.只有不可删除的值类型可以用作Nullable的通用参数.
2 2024-04-20
编程技术问答社区
如何将带有2个DataTable的数据集发送到Stimulsoft报告
我创建一个C#程序并连接到Stimulsoft进行报告. 我将一个带有2个数据词的数据集发送到我的报告中,并带有以下代码: DataSet ds = new DataSet(); dtP.TableName = "dtP"; dtF.TableName = "dtF"; ds.Tables.Add(dtP); ds.Tables.Add(dtF); Report.RegData(ds); Report.Show(); 和"报告"是搅拌对象. 显示我的报告页面时.我的报告是空的. ,当仅发送1个DataTable作为DataTable时,我的报告效果很好. 解决: 随着我的C#程序添加以下代码可以解决我的问题: objStiReport.Dictionary.Clear(); objStiReport.RegData(ds); objStiReport.Dictionary.Synchronize(); 解决方案 我也遇到了这个问题.我尝
0 2024-04-20
编程技术问答社区
如何在C#中把DataTable的行改为列
如何将数据行更改为列 DataTable dt=new DataTable(); dt = getData(); //Pull data from source file 我在数据表中具有以下格式行. 现在我想将ANC_TYPE行更改为列? 我如何转换为以下格式? 解决方案 您想要一个枢轴表: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; namespace ConsoleApplication49 { class Program { static void Main(string[] args) { DataTable dt = new DataTable(); dt.Columns.Add("OPR_
2 2024-04-20
编程技术问答社区
从数据集中获取一个列的所有值
在c#中,是否可以从数据集的所有行中获取具有简单指令的所有行的所有值(没有linq,不适合cicle)? 解决方案 仅通过迭代行,如 utaal在此答案中指出. 您可能期望DataTable.DefaultView.RowFilter会支持分组,但没有(它主要提供了Where子句的等效功能,具有一些基本的聚合 - 虽然不是简单的分组). . 其他解决方案 为什么不linq?对于没有相同限制的人来这里的人,这里有三种方法,底部两个都使用linq. c# List colValues = new List(); //for loop foreach (DataRow row in dt.Rows) { colValues.Add(row["ColumnName"]); } //LINQ Query Syntax colValues = (from DataRow row in dt.Rows select row
0 2024-04-20
编程技术问答社区
如何在C#中把嵌套列表转换为数据集
我有一个嵌套列表,我需要将其转换为C#中的数据集.我发现了许多例子,但他们不做我需要的事情.我在列表中有一个列表,我需要数据集中另一个数据表中的嵌套列表. 这是列表 的示例 public class InvoiceResponse(){ public string BillToName { get; set; } public string BillToAddr1 { get; set; } ... ... public List Items { get; set; } } 我使用以下代码将列表转换为数据集,但它没有将项目转换为数据集中的数据 中的数据. public DataSet CreateDataSet(List list) { //list is nothing or has nothing, return nothing (or add
0 2024-04-20
编程技术问答社区
使用where子句过滤可数据化的行
我有一个从数据集中提取的数据.从数据表中,我想使用Where子句返回特定行.我看着" 如何使用两个变量值从数据表中选择一行?"但是我遇到了一个错误 "不能隐式将类型'system.data.datarow []'转换为 'System.Data.Datarow'" 我搜索了Google,但找不到解决方案. 我的代码是: mySqlDataAdapter.Fill(myDataSet); DataTable dtTable = myDataSet.Tables[0]; DataRow dr = dtTable.Select("VendorID = " + Session["VendorId"].ToString()); 如何解决这个问题? 解决方案 select select dataTable返回阵列的方法即使您的查询仅选择一行 ,datarow也 DataRow[] dr = dtTable.Select("VendorID = " + Ses
0 2024-04-20
编程技术问答社区
如何删除数据集的某一列?
如何删除数据集的列? 是否有这样的方法为我这样做: rh.dsDetail = ds.Tables[0].Columns.Remove( 或可能是这样: rh.dsDetail = ds.Tables[0].Columns.Remove( ds.Tables[0].Columns[1],ds.Tables[0].Columns[2]) 解决方案 首先,A DataTable有列,而不是数据集. 如果您想摆脱它们,则: table.Columns.Clear(); 否则,如果您有索引: table.Columns.RemoveAt(0); 如果您有列索引,则应完成这项工作.请注意,如果您删除列0,则数字会随机散布(因此您可能需要以相反的顺序进行). 另外,您可能需要按名称删除: table.Columns.Remove("Foo"); 其他解决方案 我之前在WinForms和Web应用程序中都做过此操作.您必须以反向进
0 2024-04-19
编程技术问答社区
从列表或数据集中设置检查列表框中的检查项目
我有一个checkedlistbox,我想检查另一个列表中的所有项目. 此代码不起作用,因为CheckEdItems属性仅读取并且类型不匹配,但是它给出了我想做的事情的最佳想法. checkedListBox1.DataSource = DataSetSelectAll().Tables[0]; checkedListBox1.ValueMember = "id_table"; checkedListBox1.DisplayMember = "name"; List list = MyCheckedList(); checkedListBox1.CheckedItems = list; 我知道这是错误的,但不知道如何更好地解释它. 解决方案 无法一次设置(检查)许多项目,checkedlistbox1.checkeditems = list; 最好您可以使用进行循环喜欢: List
0 2024-04-19
编程技术问答社区
C# 数据表内部连接与动态列
我试图以与此问题相似的方式将两个数据列在一起: c# 中的DataTables的内联机 我试图使输出成为一个"组合"表,并带有来自两个原始表的列.他们都将有一个通用的Datestamp列. 给出的答案适用于带有固定列的数据表,但是如果它们是动态创建并且可以具有任何数量的列,我该怎么办? 我如何加入? ,例如 T1 (datestamp, t1Column1, t1Column2, t1ColumnN...) T2 (datestamp, t2Column1, t2Column2, t2ColumnN...) 我想加入以创建以下内容: J1 (datestamp, t1Column1, t1Column2, t1ColumnN, ..., t2Column1, t2Column2, t2ColumnN...) 这是可能的吗? 解决方案 我找到了一个不依赖于列循环的解决方案. 它使用了"合并"方法,我以前被解雇了,因为我认为这两个表都需要
0 2024-04-19
编程技术问答社区
有实际表名的数据集
我试图将存储的POC数据从数据集中获取.问题在于,在数据集可视化器中,实际表名称即客户或员工不仅显示Table1,Table2等. 是否可以获取实际的表名称? using (SqlConnection sqlConnection = new SqlConnection("Data Source=myserver;Initial Catalog=Northwind;Integrated Security=True")) { sqlConnection.Open(); SqlDataAdapter da = new SqlDataAdapter("EXECUTE [Northwind].[dbo].[GetCustomers_Employees] ", sqlConnection); DataSet ds = new DataSet(); da.Fill(ds);
0 2024-04-19
编程技术问答社区
获取2个数据集的差异 c#
我正在编写一种简短的算法,该算法必须比较两个数据集,以便可以进一步处理两者之间的差异. 我尝试通过合并这两个数据集并将结果更改为新数据集来实现这一目标. 我的方法看起来像这样: private DataSet ComputateDiff(DataSet newVersion, DataSet oldVersion) { DataSet diff = null; oldVersion.Merge(newVersion); bool foundChanges = oldVersion.HasChanges(); if (foundChanges) { diff = oldVersion.GetChanges(); } return diff; } 即使两个数据集中有不同的值,fundchanges的结果始终是错误的
0 2024-04-18
编程技术问答社区