将数据库中的值存储到组合框中

use*_*315 0 c# sql oledb combobox

我正在尝试使用SQL和OleDB编写程序,并且在程序运行时出现错误.程序首先计算表中的行数(访问表称为'tblCodons'),并将数字存储为j中的整数.

然后程序将所有行(来自名为'codonsFullName'的特定列)存储在comboBox1中.代码在下面我得到这个错误:System.Data.OleDb.OleDbException(0x80040E14):无效的SQL语句;必需的值'DELETE','INSERT','PROCEDURE','SELECT'或'UPDATE

代码:

int j=0;
OleDbConnection conn1 = new OleDbConnection(connectionString);
conn1.Open();
string sqlCount= "SET @j= SELECT COUNT(tblCodons.codonsFullName) FROM tblCodons";
OleDbCommand counter = new OleDbCommand(sqlCount, conn1);
counter.ExecuteNonQuery();
conn1.Close();

OleDbConnection conn2 = new OleDbConnection(connectionString);
conn2.Open();
string sqlFill = "SELECT tblCodons.codonsFullName FROM tblCodons";
OleDbCommand fill = new OleDbCommand(sqlFill, conn2);
fill.ExecuteNonQuery();
OleDbDataReader dataReader = fill.ExecuteReader();
dataReader.Read();
for (int i = 0; i < j; i++)
{
    comboBox1.Items.Add(dataReader.GetString(i));
}
Run Code Online (Sandbox Code Playgroud)

Kam*_*mal 5

你似乎只需要循环计数.另外我不明白为什么你在执行之前执行fill.ExecuteNonQuery()作为读者.

在sql查询中设置@j(如果它确实有效)在您尝试设置的代码中没有范围到本地变量j.

您应该只需要以下代码(对于任何语法错误道歉)

OleDbConnection conn2 = new OleDbConnection(connectionString);
conn2.Open();
string sqlFill = "SELECT tblCodons.codonsFullName FROM tblCodons";
OleDbCommand fill = new OleDbCommand(sqlFill, conn2);

OleDbDataReader dataReader = fill.ExecuteReader();

int j = 0;

if (dataReader.HasRows)
{
   while(dataReader.Read())
   {
       comboBox1.Items.Add(dataReader.GetString(0));
       j++;
   }
}
Run Code Online (Sandbox Code Playgroud)

希望有所帮助

  • 可能希望使用using语句包装连接和命令对象. (2认同)