提供程序无法确定字符串值,例如,行刚刚创建.. Ole

时间:2013-05-29 15:17:24

标签: c# .net ms-access ms-access-2007 oledbconnection

 public void SetConnection(string text1, string text2, string text3, string text4, string text5, string text6, string text7)
    {
        string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= c:\\Users\\Clients Information pats.mdb";


        database = new OleDbConnection(connectionString);
        database.Open();

    }

data1 = DataAccess.DatabaseTables("SELECT * from [CLIENTS]", DataAccess.database);

 public DataTable DatabaseTables(string QueryString, OleDbConnection DataConnection)
    {

        OleDbCommand SQLQuery = new OleDbCommand();
        DataTable data = null;
        SQLQuery.Connection = null;
        OleDbDataAdapter dataAdapter = null;
        SQLQuery.CommandText = QueryString;
        SQLQuery.Connection = DataConnection;
        data = new DataTable();
        dataAdapter = new OleDbDataAdapter(SQLQuery);

        dataAdapter.Fill(data);
        return data;
    }

获取标题中列出的奇怪错误。 Setconnection设置我的连接字符串和连接确定。然后'data1'调用函数DatabaseTables,它在'dataAdapter.Fill(data);'处调用异常。我认为问题可能是我在我的机器上访问。 mdb将在2013年在我的机器上打开,因为它是早期版本。我安装了Access 2007运行时。打开它,它说只读了我需要更改此属性。然后我尝试以管理员身份打开访问2013,Office 2013自己进行了一些重新配置,现在这个mdb文件总是尝试在访问2013中打开。我现在将尝试重新安装访问2007.是否有可能我需要卸载访问2013或是这可能根本不是访问问题,但可能是我的代码或mdb本身的问题。我从该机器上的Access 2007上打开的服务器上复制了这个mdb文件,但是它试图增强它,因为它显然是一个更早的版本

1 个答案:

答案 0 :(得分:1)

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source= u:\\Clients Information pats_30may13.accdb;Jet OLEDB:Database Password=MyDbPassword;";

我将源访问数据库升级为accdb格式,并确保我可以在自己的计算机上打开此数据库而不是服务器。我收到通知说升级时出现了一些错误,但似乎没问题。然后我使用了上面的连接字符串 这解决了这个问题。