如何解决System.Data.OleDb.OleDbException:'无法再打开任何表'
虽然我的程序通常在Visual Studio 2017中运行,但是我关闭了它并重新打开它,从那一刻起,我在行中收到错误消息“ System.Data.OleDb.OleDbException:'无法再打开任何表。'”大胆的字母。我的代码已连接到Microsoft Access数据库。你能帮我吗?这是为了我的论文,我真的很需要您的帮助。
私有无效Grid_Loaded(对象发送者,RoutedEventArgs e) { label.Content =“Ερώτηση” +问题;
var DBPath = System.AppDomain.CurrentDomain.BaseDirectory + "\\Database\\Users.mdb";
conn = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + DBPath);
conn.Open();
id = MainWindow.id;
OleDbDataReader dr1 = null;
do
{
rInt = r.Next(1,20);
cmd = new OleDbCommand("SELECT * FROM TestQuestions WHERE Chapter='Eisagogi' AND ID="+rInt+"; ");
cmd.Connection = conn;
**dr1 = cmd.ExecuteReader();**
解决方法
根据您的代码,我认为您正在使用随机数从数据库中过滤数据。
如果您想使用OleDbDataReader
从数据库中获取数据,建议您使用while(dr1.read())
而不是do.. while
。
我修改了一些代码,这是您可以参考的代码示例。
代码:
var conn = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + DBPath);
conn.Open();
int rInt = 0;
Random random = new Random();
rInt = random.Next(1,20);
OleDbCommand cmd = new OleDbCommand("SELECT * FROM TestQuestions WHERE Chapter='Eisagogi' AND ID=" + rInt + "; ",conn);
OleDbDataReader dr1 = cmd.ExecuteReader();
string result = string.Empty;
while(dr1.Read())
{
result = dr1["Question"].ToString();
MessageBox.Show(result);
}
conn.Close();
,
我要感谢大家的解决方案,但问题出在这里
OleDbCommand cmd = new OleDbCommand(“ SELECT * FROM TestQuestions WHERE Chapter ='Eisagogi'AND ID =” + rInt +“;”,conn);
我已经在数据库中更改了Eisagogi的名称,因此,“ do ... while”命令从未完成。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。