我有一个Database类,它抽象出SqlCommand的ExecuteNonQuery()和ExecuteReader().由于各地使用块包裹的SqlConnection和SqlCommand的,该CustomExecuteReader()被调用后SqlDataReader中被关闭,所以我不能在业务层面层读取SqlReaderResultSet.代码如下.谢谢大家的反馈.
public static SqlDataReader SqlReaderResultSet { get; set; }
public static SqlDataReader CustomExecuteReader(string storedProc)
{
using (var conn = new SqlConnection(ConnectionString))
{
var cmd = new SqlCommand(storedProc, conn) {CommandType = CommandType.StoredProcedure};
try
{
conn.Open();
SqlReaderResultSet = cmd.ExecuteReader();
}
catch (InvalidOperationException)
{
if (conn.State.Equals(ConnectionState.Closed))
conn.Open();
}
finally
{
conn.Close();
}
}
return SqlReaderResultSet;
}
Run Code Online (Sandbox Code Playgroud) 我正在处理C#和MySql请求.我正在尝试在我的数据库中检索我的数据但是我有这样的错误消息:读取器关闭时无效的读取尝试.
谢谢你们的帮助:)
我有这个功能:
public MySqlDataReader GetValueFromTable(string table, ArrayList attribut, ArrayList parameter)
{
string query = string.Empty;
MySqlDataReader rdr = null;
try
{
query = "SELECT * FROM `" + table + "` WHERE ";
for (int i = 0; i < attribut.Count; i++)
{
query += attribut[i] as string;
query += " = ";
query += parameter[i] as string;
if(i != attribut.Count - 1)
query += " AND ";
}
query += ";";
using (mysqlConnection)
{
using (mysqlCommand = new …Run Code Online (Sandbox Code Playgroud) 在我的表中,我使用IsTrue列类型.
当我执行select命令时:
SqlDataReader reader = command.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
我不确定会有什么reader["isTrue"]回报?
我试着做比较
reader["isTrue"].ToString().Equals("0")
Run Code Online (Sandbox Code Playgroud)
但它没有奏效.有人可以告诉我我做错了什么吗?
我有一个执行SQL查询的函数.根据注册表值,它将命中SQL Server或SQL Server Compact Edition.如果它使用的是SQL Server CE,则设置recordSet变量的行应如下所示:
SqlCeDataReader recordSet = da.ExecuteSQLCommand(selectCommand);
Run Code Online (Sandbox Code Playgroud)
对于SQL Server,它应该如下所示:
SqlDataReader recordSet = da.ExecuteSQLCommand(selectCommand);
Run Code Online (Sandbox Code Playgroud)
我试图将所有这些放在函数开头的if/then语句中,但似乎无法弄清楚如何在if/then中设置Type.这是我的(部分)代码:
public static string SqlQuery(string selectCommand, int regval)
{
var recordSet = null;
string selectCommand = "select * from whatever";
if (regval == 0)
{
SqlDataReader recordSet = null;
}
else
{
SqlCEDataReader recordSet = null;
}
recordSet = da.ExecuteSQLCommand(selectCommand);
}
Run Code Online (Sandbox Code Playgroud)
问题是除非我在if/else之前声明了recordSet变量,否则我不能在之后使用它.但是,如果我在if/else之前声明它,我就无法更改类型.
我正在尝试通过WCF服务访问Silverlight应用程序的SQL数据库,由于某种原因,我的SqlDataReader对象一直给我错误.我只是试图从数据库中检索一个单一的值.
这是我现在的代码:
using(SqlConnection oConnection = new SqlConnection(ConnectionString))
{
SqlCommand oCommand = new SqlCommand("SELECT SystemVersNo FROM dbo.CoPolicyPointer WHERE SystemAssignId = '58859700000000'");
CompositeType oCustomer = new CompositeType();
SqlDataReader oReader = null;
oConnection.Open();
oCommand.Connection = oConnection;
oReader = oCommand.ExecuteReader();
if (oReader.HasRows)
{
oCustomer.SRVNo = oReader.GetValue(0).ToString();
}
else
{
oCustomer.SRVNo = "No rows returned.";
}
oConnection.Close();
return oCustomer;
}
Run Code Online (Sandbox Code Playgroud)
oReader.HasRows返回true,但oReader.GetValue(0)(或oReader.GetAnythingElse,就此而言)抛出一个错误:
System.InvalidOperationException:没有数据时读取的尝试无效.
然而,真正令我困惑的是,如果我打电话oReader.GetOrdinal("SystemVersNo"),或者oReader.GetName(0),他们都返回正确的价值观.序数位置如何以零返回,但是在该位置找不到要读取的值?如果我在SQL Server Management Studio中运行相同的查询,那么值就没问题了,所以我知道它就在那里.
我对这一切都是全新的,我错过了一些基本的东西吗?或者有什么时髦的事情发生.
谢谢!
假设我有一个包含 3 列的表——“Column1”、“Column2”和“Column3”——所有 3 列的数据类型都是 varchar(100)。
使用 PowerShell,如何连接到 SQL Server 并使用 SqlDataReader 和 ForEach 运算符查看“Column2”的内容?
我正在使用a SqlDataReader而在尝试阅读读者时我正在使用行.
当我检查时.HasRows,行不可用.
List<EmployeeTimings> empTimingsList = new List<EmployeeTimings>();
// Creates a SQL connection
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["WINPAKContext"].ToString()))
{
// Creates a SQL command
using (var command = new SqlCommand("SELECT * FROM SEED_VIEW WHERE empid is not null and DateTime > '" + dtlastpunch + "' order by datetime", connection))
{
connection.Open();
// Loads the query results into the table
var reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
EmployeeTimings empTime = new EmployeeTimings();
empTime.CardNumber …Run Code Online (Sandbox Code Playgroud) 我的代码中的最后一个字符串有问题.
这是我的代码:
private void comboLname_SelectedIndexChanged(object sender, EventArgs e)
{
string conn = "Data Source=srv-db-02;Initial Catalog=rmsmasterdbtest;Persist Security Info=True;User ID=test;Password=*****";
string Query = "select * from RMSCRMTest.dbo.sales where LastName= '" + comboLname.Text + "' ;";
SqlConnection Myconn = new SqlConnection(conn);
SqlCommand cmdDataBase = new SqlCommand(Query, Myconn);
SqlDataReader Reader;
try
{
Myconn.Open();
Reader = cmdDataBase.ExecuteReader();
while (Reader.Read())
{
string ID = Reader.GetInt32(Reader.GetOrdinal("ID")).ToString();
string AccountNuber = Reader.GetString(Reader.GetOrdinal("AccountNumber")).ToString();
string Time = Reader.GetDateTime(Reader.GetOrdinal("Time")).ToString();
string Deposit = Reader.GetDecimal(Reader.GetOrdinal("Deposit")).ToString();
string slastname = Reader.GetString(Reader.GetOrdinal("lastname"));
string sstatus = Reader.GetString(Reader.GetOrdinal("status"));
txtid.Text …Run Code Online (Sandbox Code Playgroud) 如何获取datareader的长度,如:
sqlDataReader dr = command.ExecuteReader();
dr.Read();
int L= dr.Length;// this doesn't work.
Run Code Online (Sandbox Code Playgroud)
?
如何在MVC中使用SqlDataReader使用Razor视图显示数据?我已经尝试过这样的事情。
控制器代码:-
public ActionResult UserDetails(DashBoard dash)
{
using (var cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
{
String sql = "SELECT DU.UserRMN, MU.Name, DeptName, MgrID, TLeadID FROM Details_Users DU, Master_Users MU where DU.UserRMN=MU.UserRMN";
SqlCommand cmd = new SqlCommand(sql, cn);
cn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
List<DashBoard> model = new List<DashBoard>();
while(rdr.Read())
{
var details = new DashBoard();
details.UserRMN = rdr["UserRMN"].ToString();
details.Name = rdr["Name"].ToString();
details.DeptID = rdr["DeptID"].ToString();
details.MgrID = rdr["MgrID"].ToString();
details.TLeadID = rdr["TLeadID"].ToString();
model.Add(details);
}
return View(model);
}
}
Run Code Online (Sandbox Code Playgroud) sqldatareader ×10
c# ×9
sql-server ×5
.net ×1
asp.net-mvc ×1
bit ×1
database ×1
foreach ×1
powershell ×1
razor ×1
silverlight ×1
sql ×1
types ×1
wcf ×1
winforms ×1