现在修改成这样,还是不行啊,老大们指点下using System; using System.Data; using System.Data.OleDb;public class TestClass { public static int Main() { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\\web\\zjisp\\web\\zjisp.mdb"; string strSql = "select * from [Category] where id=?"; OleDbConnection myConn = new OleDbConnection(strConn); OleDbCommand myCmd = new OleDbCommand(strSql,myConn);
好了,谢谢楼上的~ 我发代码你的时候,是修改过数据库路径的,所以不是数据库的问题。 是应该这样写:string strSql = "select * from [Category] where CategoryID=?"; 别的地方都不用改,是我记错了数据库里面的字段名字,不好意思。 当然,你那样也是对的。我的已经弄好了,谢谢~!接分。 using System; using System.Data; using System.Data.OleDb;public class TestClass { public static int Main() { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\\web\\zjisp\\web\\zjisp.mdb"; string strSql = "select * from [Category] where CategoryID=?"; OleDbConnection myConn = new OleDbConnection(strConn); OleDbCommand myCmd = new OleDbCommand(strSql,myConn);
using System.Xml;
using System.Data.OleDb;
using System.Data;namespace ACS
{
/// <summary>
/// 對數據庫進行更新
/// </summary>
/// AIDU數據庫連接
/// Retrieval 返回查詢Dataset
/// Translation與數據庫進行交易[Access = true][fail = false]
///
public class AIDU
{
#region 連接失敗返回失敗消息--[Link Ok return null][Link fail return ErrorMessage]
public string ErrorMsg()
{
return sErrorMsg;
} #endregion #region 設置公共連接對像字串--[ sAcsCon ]
public string sAcsConString()
{
string sConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\\test.mdb";
return sConString;
}
public string sAcsCon
{
get{return sAcsConString();}
}
#endregion #region 設置公共連接對像--[ Link_cn ] public OleDbConnection Link_cn
{
get{return Acs_cn();}
} public OleDbConnection Acs_cn()
{
OleDbConnection cn = new OleDbConnection(sAcsCon);
if(cn.State == ConnectionState.Closed)
{
cn.Open();
}
return cn;
} #endregion //連接失敗後的返回消息
private string sErrorMsg ="" ;
//連接標志變量 [bFlag = true Connection Database Success]
//[bFlag = false Connection Database unSuccess]
private bool bFlag = false;
#region 數據庫連接--[ LINK-TEST ] public bool AIDU_Link()
{
OleDbConnection TestCn = new OleDbConnection(sAcsCon);
//測試數據庫連接
try
{
if(TestCn.State != ConnectionState.Open)
{
TestCn.Open();
bFlag = true;
}
}
catch(Exception e)
{
sErrorMsg = e.Message;
}
finally
{
if(TestCn.State == ConnectionState.Open)
{
TestCn.Close();
}
}
return bFlag;
} #endregion #region 資料查詢--[ SELECT ]
public DataSet Select(string sCmdString)
{
//建立CONNECTION對像
OleDbConnection cn1=new OleDbConnection(sAcsCon);
//建立DATASET對像,做資料返回值
DataSet oDs = new DataSet();
try
{//建立Adapter對像
OleDbDataAdapter myAdapter = new OleDbDataAdapter(sCmdString,cn1);
myAdapter.Fill(oDs);
}
catch
{
cn1.Close();
}
return oDs;
}
#endregion #region 數據資料更新--[ Update ] //執行--[ UPDATE ][ INSERT ][ DELETE ]
//[ The command Execute sccess return 1]
//[ The command Execute unSuccess return -1]
public int UpdateCmd(string CommandString)
{
//進行一個本地交易
OleDbTransaction myTran = Link_cn.BeginTransaction();
myTran.Begin();
//oledbcommand 命令執行交易
OleDbCommand myCmd = new OleDbCommand(CommandString,Link_cn);
//和數據庫進這行數據交易
try
{
//提交數據
myCmd.ExecuteNonQuery();
myTran.Commit();
return 1;
}
catch(Exception te)
{
throw te;
//出錯數據回滾原來的狀態,保持數據庫一致性
myTran.Rollback();
return -1;
}
finally
{
//執行交易後關閉聯接
if(Link_cn.State==ConnectionState.Open)
{
Link_cn.Close();
}
}
}
#endregion
}
}
中没有指定字段,应该这样把
myCmd.Parameters.Add("@id",类型,长度,字段);
中没有指定字段,应该这样把
myCmd.Parameters.Add("@id",类型,长度,字段);
mycmd.parameters[0].value=i
中没有指定字段,应该这样把
myCmd.Parameters.Add("@id",类型,长度,字段);
mycmd.parameters[0].value=i
这样的我昨天也写过,但是还是发生同样的异常。那个繁体字的,你写的什么啊???
谢谢楼上的回答
using System.Data;
using System.Data.OleDb;public class TestClass
{
public static int Main()
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\\web\\zjisp\\web\\zjisp.mdb";
string strSql = "select * from [Category] where id=?"; OleDbConnection myConn = new OleDbConnection(strConn);
OleDbCommand myCmd = new OleDbCommand(strSql,myConn);
for(int i = 0; i <=5; i++)
{
try
{
OleDbParameter parm = new OleDbParameter("id",OleDbType.Integer,5);
parm.Direction = ParameterDirection.Input; myCmd.Parameters.Add(parm);
myCmd.Parameters["id"].Value = i; myConn.Open(); Console.WriteLine(myCmd.CommandText);
OleDbDataReader myReader = myCmd.ExecuteReader(); while(myReader.Read())
{
Console.WriteLine("{0}\t{1}",myReader[0].ToString(),myReader[1].ToString());
} myReader.Close();
myConn.Close();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
Console.ReadLine();
return 0;
}
}
Console.ReadLine();
return 1;
}
}
string strSql = "select * from [Category] where id=@p";OleDbParameter parm = new OleDbParameter("@id",OleDbType.Integer,5,"id");
access是要使用问号作为占位符的~!
我试试先。
thx
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\\zjisp.mdb";
string strSql = "select * from [Category] where CategoryID=@p"; OleDbConnection myConn = new OleDbConnection(strConn);
OleDbCommand myCmd = new OleDbCommand(strSql,myConn);
for(int i = 0; i <=8; i++)
{
try
{
OleDbParameter parm = new OleDbParameter("@id",OleDbType.Integer,5,"CategoryID");
parm.Direction = ParameterDirection.Input; myCmd.Parameters.Add(parm);
myCmd.Parameters["@id"].Value = i; myConn.Open(); Console.WriteLine(myCmd.CommandText);
OleDbDataReader myReader = myCmd.ExecuteReader(); while(myReader.Read())
{
Console.WriteLine("{0}\t{1}",myReader[0].ToString(),myReader[1].ToString());
} myReader.Close();
myConn.Close();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
Console.ReadLine();
return 0;
}
}
Console.ReadLine();
return 1;
}
我发代码你的时候,是修改过数据库路径的,所以不是数据库的问题。
是应该这样写:string strSql = "select * from [Category] where CategoryID=?";
别的地方都不用改,是我记错了数据库里面的字段名字,不好意思。
当然,你那样也是对的。我的已经弄好了,谢谢~!接分。
using System;
using System.Data;
using System.Data.OleDb;public class TestClass
{
public static int Main()
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\\web\\zjisp\\web\\zjisp.mdb";
string strSql = "select * from [Category] where CategoryID=?"; OleDbConnection myConn = new OleDbConnection(strConn);
OleDbCommand myCmd = new OleDbCommand(strSql,myConn);
for(int i = 0; i <=8; i++)
{
try
{
OleDbParameter parm = new OleDbParameter("ID",OleDbType.Integer,5);
parm.Direction = ParameterDirection.Input; myCmd.Parameters.Add(parm);
myCmd.Parameters["ID"].Value = i; myConn.Open(); OleDbDataReader myReader = myCmd.ExecuteReader(); while(myReader.Read())
{
Console.WriteLine("{0}\t{1}",myReader[0].ToString(),myReader[1].ToString());
} myReader.Close();
myConn.Close();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
Console.ReadLine();
return 0;
}
}
Console.ReadLine();
return 1;
}
}