Tag: sqldatareader

关闭SQLDataReaders – 如何判断它们是否已关闭?

我发现我有一些网站连接池问题,我正在跟踪它们。 我知道有一件事要确保任何SQLDataReaders都关闭,我已经走了,并确保它们是。 我脑子里浮现的一个问题是关于返回SQLDataReaders的方法以及它们如何关闭(或不关闭)。 所以这里有我设置的东西和一些示例方法: public static SqlDataReader ExecuteReader(SqlCommand cmd) { SqlConnection c = new SqlConnection(Properties.Settings.Default.DatabaseConn); cmd.Connection = c; c.Open(); return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); } 然后我有一个使用’ExecuteReader()’的方法 public static SqlDataReader GetData() { SqlCommand Query = new SqlCommand(“select * from SomeTable”); return ExecuteReader(Query); } 现在说我有另一个调用’GetData’的方法。 我显然简化了一些事情 public static SqlDataReader GetMoreData() { return GetData; } 所以我的问题是,当我像这样调用’GetMoreData’时 SqlDataReader dr = GetMoreData(); //do […]

数据类型text和varchar在等于运算符中不兼容

我试图在数据网格视图上访问数据库中的所有记录,具体取决于通过具有2个用于user_name和密码的文本框的表单登录的用户类型,并显示提交按钮记录。 但是我编写的代码给出了以下错误:数据类型text和varchar在等于运算符中是不兼容的。 请建议更改。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Configuration; using System.Data.SqlClient; namespace Login_form { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { string str […]

从DataReader读取数据的通用方法

我目前正在使用此方法从DataReader读取数据 – private T GetValue(object obj) { if (typeof(DBNull) != obj.GetType()) { return (T)obj; } return default(T); } 将上述方法称为 – GetValue(dataReader[“columnName1”]) GetValue(dataReader[“columnName2”]) GetValue(dataReader[“columnName3”]) 但是,当columnName3的值为7200000且出错时,此操作将失败 Invalid Cast Exception. 我正在考虑修改我的方法来替换 – return (T)obj; 同 return (T)Convert.ChangeType(obj, typeof(T)); 但期待更好的方式,因为这种变化将涉及两次类型铸造。 还有更好的想法? 谢谢!

CommandBehavior.SequentialAccess是否有任何性能提升?

我意识到我总是按索引返回的顺序读取我的字段(使用常量)。 所以据我所知,我的代码已经与CommandBehavior.SequentialAccess兼容。 如果我打开它会有任何好处吗? DataReader只是前传,只读是真正的性能增益吗?

无法将类型为“System.Int32”的对象强制转换为在DataReader.GetString()中键入“System.String”

我试图将数据库中的数据添加到acombobox。 try { SqlCeCommand com = new SqlCeCommand(“select * from Category_Master”, con); SqlCeDataReader dr = com.ExecuteReader(); while(dr.Read()){ string name = dr.GetString(1); cmbProductCategory.Items.Add(name); } } catch(Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message, System.Windows.Forms.Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } 我得到以下exception: 无法将“System.Int32”类型的对象强制转换为“System.String”类型 我在这里想念的是什么?

检查它是否是sqldatareader中的最后一条记录

有没有办法检查我是否在最后一张唱片上? 谢谢

SQLDataReader行计数

我试图通过迭代读取器获得返回的行数。 但是当我运行这段代码时,我总是得到1? 我搞砸了吗? int count = 0; if (reader.HasRows) { while (reader.Read()) { count++; rep.DataSource = reader; rep.DataBind(); } } resultsnolabel.Text += ” ” + String.Format(“{0}”, count) + ” Results”;

‘ExecuteReader需要一个开放且可用的连接。 连接的当前状态是打开的’

用C#编写的一个相当大的Web应用程序不断抛出2个错误: ‘ExecuteReader需要一个开放且可用的连接。 连接的当前状态是打开的。 并且’读取器关闭时无效尝试调用读取。’ 这些错误是偶然的 – 用于在95%的时间内加载精细的页面,但最近它们已成为地方病,它们一直在发生并且基本上削弱了应用程序的function。 Web应用程序高度依赖于MS SQL数据库,并且错误似乎不仅限于一个页面,而是几乎所有连接到数据库的页面。 查询按如下方式执行: Database.Open(); // Custom class that has our connection string hard coded. string query = “SELECT * FROM table”; // (dummy query) SqlCommand command = new SqlCommand(query, Database.Conn); SqlDataReader reader = null; try { reader = command.ExecuteReader(CommandBehaviour.CloseConnection); if (reader.HasRows) { while (reader.Read()) { // Do something […]

ADO.NET问题:何时使用DataReader,DataAdapter

我只是想知道,在使用DataReader和DataAdapter从数据库中获取数据时我需要考虑哪些事情,而另外两个之间的区别是datareader需要打开连接而datadapter不需要…在我们的项目中,使用了DataReader我们所有的DAL,我们从不使用dataadapter。 所以我想知道使用DataAdapter + Datatable组合比使用DataReader更好的情况。 提前致谢。

c#IDataReader与SqlDataReader的区别

有人能告诉我这两段代码之间的区别吗? 为什么要使用IDataReader? using (IDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { // get data from the reader } } using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { // get data from the reader } }