MS Access OleDB 没有 return 任何行
MS Access OleDB does not return any row
我正在使用此代码 return 向我的应用程序发送数据:
try
{
OleDbConnection conn = new OleDbConnection(GetConnectionStringAccess());
string cSQL = "SELECT Cracha, Data_Hora, Terminal, Entrada_Saida, Situacao, Tipo, Divergencia, SaiuMarcacao, Justificativa, IDMarcacao, PIS, NSR FROM Marcacao";
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = cSQL;
cmd.CommandType = CommandType.Text;
OleDbDataReader dr = cmd.ExecuteReader();
conn.Close();
return dr;
}
catch (Exception ex)
{
throw;
}
但什么都没有 returned。我的数据库有一百万条记录。
如果我使用 Dataset/Table 适配器访问数据库,数据会正常显示,但代码中没有任何内容 returns;
这是连接字符串 return 通过我的方法 GetConnectionStringAccess():
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\CCBM\Ponto Dimep\BM\DIMEP.Mdb;Persist Security Info=True;Jet OLEDB:Database Password=xxxx"
这是我从 app.config 获取应用程序连接字符串的方法:
public static string GetConnectionStringAccess()
{
return System.Configuration.ConfigurationManager.ConnectionStrings["ImportaAccess.Properties.Settings.PontoAccessBM"].ConnectionString;
}
在 app.config 中,这是连接字符串键:
<add name="ImportaAccess.Properties.Settings.PontoAccessBM" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\CCBM\Ponto Dimep\BM\DIMEP.Mdb;Persist Security Info=True;Jet OLEDB:Database Password=obdI109j"
providerName="System.Data.OleDb" />
为什么我的代码没有 return 使用此代码的任何行,如果我 运行 使用 tableAdapter.Fill 方法 return 所有行?
在关闭连接之前,您需要从数据读取器读取一个对象。喜欢:
List<object> x = new List<>();
while (dr.Read())
{
x.Add(<your stuff>); // add as appropriate
}
然后 return 列表(或任何你使用的)而不是 returning 数据读取器
因为您的 DataReader 是一个指针,并且您在 return 之前关闭。
尝试在 DataReader 关闭前使用数据检索数据 table
像这样:
try
{
DataTable Tbl = new DataTable();
OleDbConnection conn = new OleDbConnection(GetConnectionStringAccess());
string cSQL = "SELECT Cracha, Data_Hora, Terminal, Entrada_Saida, Situacao, Tipo, Divergencia, SaiuMarcacao, Justificativa, IDMarcacao, PIS, NSR FROM Marcacao";
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = cSQL;
cmd.CommandType = CommandType.Text;
OleDbDataReader dr = cmd.ExecuteReader();
Tbl.Load(rd,LoadOption.OverwriteChanges);
conn.Close();
return Tbl;
}
catch (Exception ex)
{
throw;
}
我正在使用此代码 return 向我的应用程序发送数据:
try
{
OleDbConnection conn = new OleDbConnection(GetConnectionStringAccess());
string cSQL = "SELECT Cracha, Data_Hora, Terminal, Entrada_Saida, Situacao, Tipo, Divergencia, SaiuMarcacao, Justificativa, IDMarcacao, PIS, NSR FROM Marcacao";
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = cSQL;
cmd.CommandType = CommandType.Text;
OleDbDataReader dr = cmd.ExecuteReader();
conn.Close();
return dr;
}
catch (Exception ex)
{
throw;
}
但什么都没有 returned。我的数据库有一百万条记录。
如果我使用 Dataset/Table 适配器访问数据库,数据会正常显示,但代码中没有任何内容 returns;
这是连接字符串 return 通过我的方法 GetConnectionStringAccess():
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\CCBM\Ponto Dimep\BM\DIMEP.Mdb;Persist Security Info=True;Jet OLEDB:Database Password=xxxx"
这是我从 app.config 获取应用程序连接字符串的方法:
public static string GetConnectionStringAccess()
{
return System.Configuration.ConfigurationManager.ConnectionStrings["ImportaAccess.Properties.Settings.PontoAccessBM"].ConnectionString;
}
在 app.config 中,这是连接字符串键:
<add name="ImportaAccess.Properties.Settings.PontoAccessBM" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\CCBM\Ponto Dimep\BM\DIMEP.Mdb;Persist Security Info=True;Jet OLEDB:Database Password=obdI109j"
providerName="System.Data.OleDb" />
为什么我的代码没有 return 使用此代码的任何行,如果我 运行 使用 tableAdapter.Fill 方法 return 所有行?
在关闭连接之前,您需要从数据读取器读取一个对象。喜欢:
List<object> x = new List<>();
while (dr.Read())
{
x.Add(<your stuff>); // add as appropriate
}
然后 return 列表(或任何你使用的)而不是 returning 数据读取器
因为您的 DataReader 是一个指针,并且您在 return 之前关闭。
尝试在 DataReader 关闭前使用数据检索数据 table 像这样:
try
{
DataTable Tbl = new DataTable();
OleDbConnection conn = new OleDbConnection(GetConnectionStringAccess());
string cSQL = "SELECT Cracha, Data_Hora, Terminal, Entrada_Saida, Situacao, Tipo, Divergencia, SaiuMarcacao, Justificativa, IDMarcacao, PIS, NSR FROM Marcacao";
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = cSQL;
cmd.CommandType = CommandType.Text;
OleDbDataReader dr = cmd.ExecuteReader();
Tbl.Load(rd,LoadOption.OverwriteChanges);
conn.Close();
return Tbl;
}
catch (Exception ex)
{
throw;
}