2011-11-25 113 views
-2

我的项目有一个对SQLite.Interop.066.dll的引用,甚至在将SQLite数据库放入正确的路径后,应用程序仍然无法找到它。 A返回SQLiteException was unhandled错误:无法打开数据库文件,SQLiteException未处理

 SQLiteConnection conn = new SQLiteConnection(); 
     //SQLiteDataAdapter da; 
     SQLiteCommandBuilder cb; 
     DataTable dt=new DataTable(); 
     int row = 0; 

     conn.ConnectionString = "Data Source=C:\\database\\info.db; Version=3"; 
     conn.Open(); 

     DataRow dr = dt.NewRow(); 
     dr["name"] = txtName.Text; 
     dr["address"] = txtAddress.Text; 
     dr["phone"] = txtPhone.Text; 
     dr["position"] = txtPosition.Text; 
     dt.Rows.Add(dr); 
     da.Update(dt); 

     row = dt.Rows.Count - 1; 
     txtName.Text = dt.Rows[row]["name"].ToString(); 
     txtAddress.Text = dt.Rows[row]["address"].ToString(); 
     txtPhone.Text = dt.Rows[row]["phone"].ToString(); 
     txtPosition.Text = dt.Rows[row]["position"].ToString(); 

     da.Fill(dt); 

     cb = new SQLiteCommandBuilder(da); 

     conn.Dispose(); 
     conn.Close(); 

在行上发生异常:conn.Open();
对不起之前的错误标题错误...

+3

你有什么试过的?这个错误出现在什么情况/上下文中? –

+1

请显示一些代码... –

+0

对不起,没有更多的细节帮助。 – CouncilScribe

回答

1

看看适合的格式,可以在这里找到一个SQLite连接字符串:http://www.connectionstrings.com/sqlite

初看起来,您似乎错过了“info”上的文件扩展名以及可能适用于您的实现的任何必需的连接字符串选项(同样请参阅connectionstrings.com以获取帮助)。

由于错误是由conn.Open()引发的“索引超出范围”异常,它听起来好像只是无法找到数据库,修复扩展可能只是伎俩。

+0

虽然我将数据库名称重命名为info.db,但得到同样的错误... – rose

+0

我不是SQLite专家,但是通过查看'connectionStrings.com'上的示例并执行一些Google搜索,看起来您需要包含连接字符串的'Version'子句。另外,请确保您的数据库版本为3或更高,因为它看起来版本2不适用于您正在使用的System.Data.SQLite.SQLiteConnection对象。 –

+0

我敢肯定我的sqlite ado.net数据库是以上版本3 – rose

0
conn.ConnectionString = "Data Source=C:\\database\\info.db; Version=3;";