日期:2014-05-18  浏览次数:20814 次

我这段从ACCESS数据库读一个值到控制台的程序哪里错了?求指导!!急!
[code=C#][/code]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;



namespace DBtest
{
  class Program
  {
  static void Main(string[] args)
  {
  string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
  strConnection += @"Data Source=C:\Users\Dynames\Desktop\testDB\DBtest\DBtest.mdb";
  OleDbConnection objConnection = new OleDbConnection(strConnection);
  objConnection.Open();
  OleDbCommand command = new OleDbCommand("SELECT [english] FROM [main] WHERE ID=01", objConnection);
  OleDbDataReader reader = command.ExecuteReader();
  reader.Read();
   
   
  int k = (int) (reader["english"]);
  Console.WriteLine("{0}", k);
  reader.Close();
  Console.ReadLine();
  
  }
  }
}


------解决方案--------------------
你的错误错在哪里?错误提示是什么?
1、access数据库的路径对不对?能不能出来一个值
2、(int) (reader["english"]);转换的时候类型对不对,能不能转换

其实你只要单步调试一下就可以了,根据调试调出来的错误提示,一步一步走下去。
------解决方案--------------------
探讨

错误提示是“标准表达式中数据类型不匹配”。。。数据库路径这些应该不会错的。。上网查了下说是可能SQL语句写错了。。。可我不知道错在哪里啊。。。新人求指导。。。SQL语句里面的表格名。。。列名都不会错的

------解决方案--------------------
SELECT [english] FROM [main] WHERE ID=01 ??
ID=01?
------解决方案--------------------
SQL code
SELECT [english] FROM [main] WHERE ID="01"

------解决方案--------------------
1。SELECT [english] FROM [main] WHERE ID="01",要加也是加单引号!
怕路径错了,就丢到bin/debug下~


2。int k = (int) (reader["english"]);
这里可能有问题