打开文件后,conn链接打开出现问题,提示路径出问题。请问高手怎么解决?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace shenkesoftware
{
public partial class test : Form
{
private OleDbConnection conn = null;
public test()
{
InitializeComponent();
this.conn = new OleDbConnection(shenkesoftware.database.dbConnection.connection);
}
private void btQuery_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Excel文件(*.xls)|*.xls";
if (dlg.ShowDialog() == DialogResult.OK)
{
string filePath = dlg.FileName;
conn.Open();//这里出现问题了,我是把数据库文件放在debug目录下的,打开桌面文件,然后就提示路径出错。
}
}
}
}
数据库链接代码:
using System;
namespace shenkesoftware.database
{
/// <summary>
/// dbConnection 的摘要说明。
/// </summary>
public class dbConnection
{
public dbConnection()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static string connection
{
get
{ return "Data Source=peopledb.mdb;Provider=Microsoft.Jet.OLEDB.4.0;"; }
}
}
}
--------------------编程问答-------------------- 1:有可能要绝对路经,时间长了,我有点忘了,
2:要么就是连接字符串有问题 --------------------编程问答--------------------
高手仔细想一下,我调试的时候数据库文件目录总是出现debug的。 --------------------编程问答-------------------- 出错提示:找不到文件 'C:\Documents and Settings\Administrator\桌面\peopledb.mdb' --------------------编程问答-------------------- 绝对路经加引号 --------------------编程问答-------------------- 最好是相对路径啊。不然我要把软件放在指定盘指定文件夹啊? --------------------编程问答--------------------
--------------------编程问答--------------------
//无密码的连接字符串
string conStr = "Provider=Microsoft.Ace.OleDb.12.0;";
conStr += @"Data Source=C:\Documents and Settings\Administrator\桌面\peopledb.mdb;";
conStr += "Persist Security Info=False;";
//有密码的连接字符串
string conStr = "Provider=Microsoft.Ace.OleDb.12.0;";
conStr += @"Data Source=C:\Documents and Settings\Administrator\桌面\peopledb.mdb;";
conStr += "Jet OleDb:DataBase Password='829321';";
对了,你的Provider要改一下,Provider=Microsoft.Jet.OLEDB.4.0; --------------------编程问答-------------------- Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|xxx.mdb;Persist Security Info=True 相对路径吧。别写绝对了 --------------------编程问答--------------------
这个写法肯定不行的。 --------------------编程问答--------------------
public static string connection
{
get
{
string path = System.Windows.Forms.Application.StartupPath + @"/../../";
System.IO.Directory.SetCurrentDirectory(path);
string strFilePath = System.IO.Directory.GetCurrentDirectory() + @"\database\peopledb.mdb";
//MessageBox.Show(strFilePath);
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + strFilePath;
}
}
这个就可以解决了。
补充:.NET技术 , C#