各位达人们,救命啊,小妹遇到个麻烦,都弄了好多天了,还是没弄好,这个项目赶着要,真的快要把我急死了!我的数据库文件是ACCESS的,只能查数据,有时候能写,有时候又不能写数据,有人说因为我用的系统是XP,
可能有问题,可是我现在把系统换成2000 SERVER了,怎么还是不对啊!帮我看看是哪不对啊,小妹万分感谢!!!我的数据库文件是ACCESS的,叫car.mdb,里面有一表:info,表里面的字段是:
Department(文本),UserName(文本),Tel(文本),LeadMind(文本),PeopleNum(文本),Date(文本)
Destination(文本),Time(数字),Time2(时间日期-----格式是:00:00),StartPlace(文本),Cause(文本)
下面是Apply.aspx.cs的部分代码:
private void Button1_Click(object sender, System.EventArgs e)
{
        string[] addCarInfo = new string[11];        addCarInfo[0] = select1.Value.ToString();
        addCarInfo[1] = select2.Value.ToString();
        addCarInfo[2] = Text1.Value.ToString();
        addCarInfo[3] = Text2.Value.ToString();
        addCarInfo[4] = Text3.Value.ToString();
addCarInfo[5] = Text4.Value.ToString();
addCarInfo[6] = Text5.Value.ToString();
addCarInfo[7] = Text6.Value.ToString();
addCarInfo[8] = Text7.Value.ToString();
addCarInfo[9] = Textarea.Value.ToString();
addCarInfo[10] = Text8.Value.ToString();
            
DBLayer test = new DBLayer();
test.AddCarInfo(addCarInfo);
}
下面是DBLayer.cs的部分代码:using System;namespace car
{
/// <summary>
/// DBLayer 的摘要说明。
/// </summary>
public class DBLayer
{
private DBConnection _userConnection = new DBConnection(); public void AddCarInfo(string[] newCarInfo)
{

string myConnectionString = "INSERT INTO info3"+
" (Department,UserName,Tel,LeadMind,PeopleNum,Date,Destination,Time,Time2,StartPlace,Cause)"+
" VALUES ('"+newCarInfo[0]+"','"+newCarInfo[1]+"','"+newCarInfo[2]+"','"+newCarInfo[3]+"','"+newCarInfo[4]+"','"+newCarInfo[5]+"',"+
" '"+newCarInfo[6]+"',12,'12:00','"+newCarInfo[9]+"','"+newCarInfo[10]+"')";

_userConnection.WriteConnection(myConnectionString);

}
         }
}下面是 DBConnection.cs的部分代码:using System;
using System.Data;
using System.Data.OleDb;namespace car
{
/// <summary>
/// DBConnection 的摘要说明。
/// </summary>
public class DBConnection
{ public int WriteConnection(string myConnectionString)
{
int rows = 0;
OleDbConnection conn = new OleDbConnection(); string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\car\DB\car.mdb";

conn.ConnectionString = connString;

OleDbCommand cmd = new OleDbCommand(myConnectionString,conn); 
try
{
conn.Open(); rows = cmd.ExecuteNonQuery();
}
catch
{
rows = 0;
} conn.Close();
return rows;
} } }

解决方案 »

  1.   

    try to change follows:public void AddCarInfo(string[] newCarInfo)
    {string myConnectionString = "INSERT INTO info3"+
    " ([Department],[UserName],[Tel],[LeadMind],[PeopleNum],[Date],[Destination],[Time],[Time2],[StartPlace],[Cause])"+
    " VALUES ('"+newCarInfo[0]+"','"+newCarInfo[1]+"','"+newCarInfo[2]+"','"+newCarInfo[3]+"','"+newCarInfo[4]+"','"+newCarInfo[5]+"',"+
    " '"+newCarInfo[6]+"',12,'12:00','"+newCarInfo[9]+"','"+newCarInfo[10]+"')";_userConnection.WriteConnection(myConnectionString);}
    }
    }
      

  2.   

    using System;
    using System.Data;
    using System.Data.OleDb;namespace car
    {
    /// <summary>
    /// DBConnection 的摘要说明。
    /// </summary>
    public class DBConnection
    { public int WriteConnection(string myConnectionString)
    {
    int rows = 0;
    OleDbConnection conn = new OleDbConnection(); string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\car\DB\car.mdb";

    conn.ConnectionString = connString;
    conn.Open(); OleDbCommand cmd = new OleDbCommand(myConnectionString,conn); 
    try
    {
    rows = cmd.ExecuteNonQuery();
    }
    catch
    {
    rows = 0;
    } conn.Close();
    return rows;
    } } }
      

  3.   

    是不是要access数据库设置为可写?
    文件属性
      

  4.   

    access数据库设置了的!加了[]以后好了,不过如果是UPDATE语句呢,是不是也要加[]呢????例如:string myConnectionString = "UPDATE tblCal SET "+
    " Status=1,CarKind='"+updateCarInfo[0]+"',CarNum='"+updateCarInfo[1]+"',CarDriver='"+updateCarInfo[2]+"'"+
    " ,DriverTel='"+updateCarInfo[3]+"',CarPerson='"+updateCarInfo[4]+"',CarKM="+carKM+",Re='"+updateCarInfo[6]+"'"+
    " WHERE UserID=222";
    这句话是不是也要加[]呢?可是怎么加呢?希望达人再来解惑!
      

  5.   

    是因为你的字段名命名的不好,和保留关键词相同了,只要将和保留关键词相同的字段名改掉或者在SQL语句里加上[]强制转换就可以了
      

  6.   

    哦,是这样的啊!可是这句话里面应该没有什么关键词吧,怎么也不对呢?能帮我看看吗?string myConnectionString = "UPDATE tblCal SET "+
    " Status=1,CarKind='"+updateCarInfo[0]+"',CarNum='"+updateCarInfo[1]+"',CarDriver='"+updateCarInfo[2]+"'"+
    " ,DriverTel='"+updateCarInfo[3]+"',CarPerson='"+updateCarInfo[4]+"',CarKM="+carKM+",Re='"+updateCarInfo[6]+"'"+
    " WHERE UserID=222";
      

  7.   

    简单一点来,你单步调下,把得到的SQL语句拷出来,放到ACCEES里运行下,或者你把把catch改成
    catch(Exception err)
    {
    Response.Write("<script>alert("+err.ToString+")</script>");
    }
    在本机运行,这样看看错误信息
      

  8.   

    另外建议不要把SQL语句的变量叫myConnectionString,容易引起误解,一般来说这个是连接字符串