Tag: ado.net

DbDataReader,NextResult()并填充多个表

这个问题是我以前的问题的延续。 没有太多细节,我正在用2个相关的1对多表填充数据集。 所以,我现在的问题是 – 为什么这段代码运作良好 public DataAgencyR_DataSet SelectOne(int id) { DataAgencyR_DataSet result = new DataAgencyR_DataSet(); using (DbCommand command = Connection.CreateCommand()) { try { command.CommandText = SqlStrings.SelectDataAgencyR_SelectOne(); var param = ParametersBuilder.CreateByKey(command, “ID_DeclAgenc”, id, “ID_DeclAgenc”); command.Parameters.Add(param); Connection.Open(); using (DbDataReader reader = command.ExecuteReader()) { while (reader.Read()) { System.Diagnostics.Trace.WriteLine(String.Format(“{0}-{1}”, reader[0], reader[1])); } System.Diagnostics.Trace.WriteLine(“————-“); reader.NextResult(); while (reader.Read()) { System.Diagnostics.Trace.WriteLine(String.Format(“{0}-{1}”, reader[0], […]

SQLDependency – 无效的SQL

我从这里可以看出最好的,我没有违反任何规则,但是更改事件会一直触发,状态无效。 SELECT COUNT_BIG([PK_Column]) AS RecordCount FROM [dbo].[My_Table] GROUP BY Varchar_50_Column 如果我这样做,一切正常。 SELECT [PK_Column] FROM [dbo].[My_Table] 但是,我不想返回这么多数据,并且SqlDependency似乎要求在每次更改事件触发以设置(或重置)订阅之后执行一次查询。 知道我的第一个查询中有什么缺陷吗?

SqlCommand返回值参数

也许看到这段代码的其他人将能够告诉我为什么returnID始终为0.我试图从插入的记录中检索新的ID。 public int AddToInventory(int PartID, int QtyOnHand, int SpokenFor, int LowOrderQty, int HighOrderQty, decimal LastBuyPrice, decimal AvgBuyPrice) { ConfigDAL config = new ConfigDAL(); string connstr = config.GetConnString(); SqlConnection conn = new SqlConnection(connstr); string query; query = “INSERT INTO Inventory (PartID, QtyOnHand, SpokenFor, LowOrderQty, HighOrderQty, LastBuyPrice, ” + “AvgBuyPrice, CreatedOn, CreatedBy, ModifiedOn, ModifiedBy) ” + “Values […]

如何删除Access Db的临时ldb文件

我有一个ASP.NET项目。 我正在连接到数据库,然后关闭并处理连接对象。 但是当任何人进入我的网站时,MS Access会创建一个临时的dbname.ldb。 当我想从我的服务器下载我的原始mdb文件时,它将不允许我访问mdb文件。 如果服务器中有ldb文件,我什么也做不了。 它锁定mdb文件,我无法移动它。 所以有什么问题? 我打开连接并关闭它。 那么为什么这个ldb文件在连接关闭后不会自行删除。

Transactionscope或IDbTransaction

编辑:我只访问1个数据库,但正在创建DTC事务。 我可以在DTC事务列表GUI(组件服务插件)中看到它。 为什么是这样? 我需要对1个数据库执行一个事务(几个插入命令)。 我应该使用TransactionScope还是IDbTransaction(connection.BeginTransaction)? TransactionScope似乎更新……但是它应该只用于两阶段提交吗? 谢谢

ODBC必须声明标量变量

考虑以下代码: string ConnectionString = “dsn=mysql;uid=sa;DATABASE=userdb;”; string qryStr = “insert into info(code) values(@code);”; OdbcConnection con = new OdbcConnection(ConnectionString); OdbcCommand cmd = new OdbcCommand(qryStr,con ); cmd.Parameters.Add(“@code”, System.Data.Odbc.OdbcType.Int).Value = “999”; cmd.Connection.Open(); OdbcDataReader odbcdtr = cmd.ExecuteReader();//exception “must declare the scalar variable @code” con.Close; 此代码引发exception“必须声明标量可变@code”。 如果有人能指出上面代码中的错误,我将非常感激。

真是奇怪的DataReader性能问题

我有一个SQL Server数据库,我正在使用ADO.NET ExecuteReader来获取一个datareader。 我的存储过程返回大约35,000条记录。 对ExecuteReader的调用大约需要3秒钟才能返回datareader。 我正在使用与此非常相似的代码来获取我的项目。 using(var conn = new SqlConnection(MySQLHelper.ConnectionString)) { conn.Open(); var sqlCommand = SqlHelper.CreateCommand(conn, “spGetItems”); using (var dr = sqlCommand.ExecuteReader()) { while(dr.read){ var item = new Item{ID = dr.GetInt32(0), ItemName = dr.GetString(1)}; items.Add(item); } } } 大多数读取花费0毫秒。 然而,间歇性地我得到一个大约5.5秒(5000+毫秒)的读取。 我查看了数据,并没有发现任何exception。 我认为开始考虑记录这么长时间的记录的频率。 这很有趣。 虽然不完全一致,但它们很接近。 需要很长时间才能加载的记录如下…… 记录#s:29,26,26,27,27,29,30,28,27,27,30,30,26,27 因此看起来26到30个记录会在0到几毫秒内读取,然后需要5秒,然后接下来的26到30个记录将再次按预期读取。 我在这里完全失败了。 我可以发布更多代码,但没有多少。 这是非常简单的代码。 编辑我的字段都不是varchar(max),甚至是close。 我最大的字段是数字(28,12)。 修改我的存储过程后,我不再有问题。 我首先将其修改为选择TOP […]

支持对象类型的.Net的第三方Oracle提供程序

我正在为.Net(ADO.NET)寻找第三方Oracle数据提供程序,它完全支持Oracle对象类型(如几何)。 我愚蠢地使用ODP.NET,现在我付出了代价 – 这是非常错误的,我刚刚到达终点(继续崩溃IIS池 – 已知问题,没有解决方案)。 我发现dotConnect很好,对象类型比ODP.NET慢4倍。 是否有其他提供商支持Oracle对象?

无法绑定多部分标识符“System.Data.DataRowView”

我有一个表填充Combobox1和Combobox1应该填充Combobox2,这就是问题所在。 这是我得到的例外 无法绑定多部分标识符“System.Data.DataRowView”。 代码: private void frm2_Load(object sender, EventArgs e) { //Populate Combobox1 SqlDataAdapter da = new SqlDataAdapter(“SELECT CategoryID, Name FROM Categories”, clsMain.con); DataSet ds = new DataSet(); da.Fill(ds); comboBox1.DataSource = ds.Tables[0]; comboBox1.DisplayMember = “Name”; comboBox1.ValueMember = “CategoryID”; } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { //populate Combobox2 SqlDataAdapter da = new SqlDataAdapter(“SELECT SubCategoryID, Name […]

使用MiniProfiler直接调用ADO.net

对于那些在C#和剖析中极客的人来说,这个问题将是愚蠢的。 我是c#的新手(基本上是一个c ++开发人员)。 如果它使用dbproviderfactory ,我可以分析数据库查询,但是当直接使用它时,我无法分析ado.net调用(原始SqlConnection和SqlCommand )。 我遇到了Miniprofiler代码,他们也可以直接调用ADO.net调用。 我只是不知道如何使用它(将其集成到我的探查器中)。 我的代码是 SqlConnection myConn = new SqlConnection(@”Server=192.168.23.99;Initial Catalog=cat1;User ID=user21;Password=userpwd”); SqlCommand myCommand = new SqlCommand(“select * from table1”, myConn); SqlDataReader dataReader; System.Threading.Thread.Sleep(5000); try { myConn.Open(); dataReader = myCommand.ExecuteReader(); GridView1.DataSource = dataReader; GridView1.DataBind(); dataReader.Close(); myCommand.Dispose(); myConn.Close(); } catch (System.Exception ex) { Response.Write(ex.ToString()); } 当执行上面的代码时,将如何调用MiniProfiler中的类? 当我的Web应用程序调用SqlCommand(..)时,如何调用这些类(希望类名是SimpleProfiledDbCommand )。 需要更好地澄清这一点。