Tag: sqldatareader

从DB读取布尔值?

在C#中,使用SqlDataReader,有没有办法从DB读取布尔值? while (reader.Read()) { destPath = reader[“destination_path”].ToString(); destFile = reader[“destination_file”].ToString(); createDir = reader[“create_directory”].ToString(); deleteExisting = Convert.ToBoolean(reader[“delete_existing”]); skipIFolderDate = reader[“skipifolderdate”].ToString(); useTempFile = reader[“useTempFile”].ToString(); password = reader[“password”].ToString(); } 在上面的代码中,delete_existing在DB中始终为1或0。 我在MSDN上读到,Convert.ToBoolean()不接受1或0作为有效输入。 它只接受真或假。 有没有其他方法将DB值转换为bool? 或者我是否需要在SqlDataReader之外执行此操作? 此外,我无法更改数据库值,因此请不要回答“将数据库值从1和0更改为true和false”。 谢谢!

我应该将什么’length’参数传递给SqlDataReader.GetBytes()

我有一个SqlDataReader,需要使用SqlDataReader.GetBytes()方法从中读取varbinary(max)列。 此方法填充字节数组,因此需要知道要读取的数据长度。 这是我感到困惑的地方。显然我想读取从这行/列中的数据库返回的所有数据,那么我应该通过什么’length’参数? 据我所知,SqlDataReader没有提供任何方法来发现可用的数据长度,因此这种方法对我来说似乎相当尴尬。 我很想在这里传递int.MaxValue而忘记这个问题,但有些事情并不适合我。 我知道我可以打电话 byte[] value = (byte[])dataReader[“columnName”]; ..而这似乎完全在内部处理长度问题。 但是,我正在使用一组围绕SqlDataReader.GetXXXX()方法构建的复杂代码生成模板。 所以我被绑在使用GetBytes并需要了解它的正确用法。

如何从SqlDataReader读取多个结果集?

我有一个SP,我试图返回2个结果集,在我的.cs文件中我尝试这样的事情: dr = cmd.ExecuteReader(); while (dr.Read()) { RegistrationDetails regDetails = new RegistrationDetails() { FName = dr[“FName”].ToString(), LName = dr[“LName”].ToString(), MName = dr[“MName”].ToString(), EntityName = dr[“EntityName”].ToString(),// in 2nd result set Percentage = dr[“Percentage”].ToString()// in 2nd result set }; } 但是我得到了: 错误:IndexOutOfRange {“EntityName”}

在SQLDataReader上使用

我知道我之前提过了一个相关的问题。 我只是想到了另一个想法。 using (SqlConnection conn = new SqlConnection(‘blah blah’)) { using(SqlCommand cmd = new SqlCommand(sqlStatement, conn)) { conn.open(); // *** do I need to put this in using as well? *** SqlDataReader dr = cmd.ExecuteReader() { While(dr.Read()) { //read here } } } } 这个论点是:由于SqlDataReader dr对象不是一个新的OBJECT LIKE连接或命令对象,它只是一个指向cmd.ExecuteReader()方法的引用,我是否需要将阅读器放在一个using 。 (现在基于我以前的post,我的理解是任何使用IDisposable对象都需要放入using ,而SQLDataReaderinheritance自IDisposable ,所以我需要把它放进去。我的判断是否正确?)我只是因为它不是一个新对象,所以它会在处理一个只是指向命令的引用指针的对象时引起任何问题吗? 非常感谢

如何在c#中有效地从SQL datareader写入文件?

我在C#中有一个远程sql连接,需要执行查询并将其结果保存到用户的本地硬盘。 这个东西可以返回相当大量的数据,因此需要考虑一种有效的存储方式。 我之前已经读过,首先将整个结果放入记忆中,然后编写它并不是一个好主意,所以如果有人可以提供帮助,那就太好了! 我目前正在将sql结果数据存储到DataTable中,虽然我认为它可以更好地在while(myReader.Read(){…}执行某些操作while(myReader.Read(){…}以下是获取结果的代码: DataTable t = new DataTable(); string myQuery = QueryLoader.ReadQueryFromFileWithBdateEdate(@”Resources\qrs\qryssysblo.q”, newdate, newdate); using (SqlDataAdapter a = new SqlDataAdapter(myQuery, sqlconn.myConnection)) { a.Fill(t); } var result = string.Empty; for(int i = 0; i < t.Rows.Count; i++) { for (int j = 0; j < t.Columns.Count; j++) { result += t.Rows[i][j] + ","; } result […]

如何在asp.net mvc视图中显示数据库记录

使用ASP.NET MVC和C#,如何将一些数据库记录传递给View并以表格forms显示它们? 我需要知道如何从已返回到SqlDataReader对象的数据库传输/传递一些记录行,并将该对象传递给View,这样我就可以使用foreach显示View中对象所包含的所有记录。 以下代码是我正在尝试做的事情。 但它不起作用。 控制者: public ActionResult Students() { String connectionString = “”; String sql = “SELECT * FROM students”; SqlCommand cmd = new SqlCommand(sql, connectionString); using(SqlConnection connectionString = new SqlConnection(connectionString)) { connectionString.Open(); SqlDataReader rdr = cmd.ExecuteReader(); } ViewData.Add(“students”, rdr); return View(); } 风景: Student

SqlDataReader – 如何将当前行转换为字典

有没有一种简单的方法将SqlDataReader的当前行的所有列转换为字典? using (SqlDataReader opReader = command.ExecuteReader()) { // Convert the current row to a dictionary } 谢谢

如何使用C#将SQL数据库中的值获取到文本框中?

我正在创建一个预订管理系统,我在尝试从SQL数据库中获取数据并插入到我的应用程序的一组文本框中时遇到问题。 我想在DataGridView中显示单击按钮时的客户详细信息,但是当我单击该按钮时,应用程序会抛出exception,并显示以下错误消息; 没有数据时读取的尝试无效。 我附上了我要查看客户详细信息的屏幕截图 ,以及按钮的代码,最终将在相应的文本框中显示客户详细信息。 任何帮助将不胜感激! SqlConnection sc = new SqlConnection(“Data Source=localhost;Initial Catalog=LoginScreen;Integrated Security=True”); SqlCommand com = new SqlCommand(); com.Connection = sc; sc.Open(); SqlDataReader read = (null); com.CommandText = (“select * from Pending_Tasks”); read = com.ExecuteReader(); CustID.Text = (read[“Customer_ID”].ToString()); CustName.Text = (read[“Customer_Name”].ToString()); Add1.Text = (read[“Address_1”].ToString()); Add2.Text = (read[“Address_2”].ToString()); PostBox.Text = (read[“Postcode”].ToString()); PassBox.Text = (read[“Password”].ToString()); DatBox.Text […]

如何检查SQLDataReader是否没有行

我试图弄清楚如何检查我的SqlDataReader是否为空或没有行(意味着保留不存在),然后显示一个消息框。 出于某种原因,当我调试一次它遇到While dr.Read())代码时,如果它没有返回结果,它While dr.Read()) 。 我已经尝试将此代码放在几个不同的位置,但如果没有返回任何记录,似乎都没有触发消息框 if (dr.GetValue(0) == DBNull.Value || !dr.HasRows) { MessageBox.Show(“Reservation Number Does Not Exist”,”Error”, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } else { (read records) } 我的代码…… try { using (SqlConnection con = new SqlConnection(connectionString)) { using (SqlCommand cmd = con.CreateCommand()) { con.Open(); cmd.CommandText = “usp_StoredProcedureName”; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue(“@regnum”, regnumber); using (SqlDataReader dr = […]

如果我调用SqlReader.Read,应该调用SqlDataReader.HasRows

试着看看在while (dr.read())函数之前添加if (dr.HasRows)是否有益。 我的意思是,从技术上讲,如果它没有行,它就不会读取,所以如果你先检查它会有关系吗? using (SqlDataReader dr = cmd.ExecuteReader()) { if (dr.HasRows) { while (dr.Read()) { ….do stuff here } } } 或者如果你只是确保它具有提供的价值,这基本上会做同样的事情…… using (SqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { ….do stuff here } }