当前位置:编程学习 > C#/ASP.NET >>

打开文件后,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:要么就是连接字符串有问题 --------------------编程问答--------------------
引用 1 楼 wmingcsharp 的回复:
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';";

--------------------编程问答--------------------
引用 6 楼 chinajiyong 的回复:
C# code

//无密码的连接字符串
            string conStr = "Provider=Microsoft.Ace.OleDb.12.0;";
            conStr += @"Data Source=C:\Documents and Settings\Administrator\桌面\peopledb.mdb;";
            conS……

对了,你的Provider要改一下,Provider=Microsoft.Jet.OLEDB.4.0; --------------------编程问答-------------------- Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|xxx.mdb;Persist Security Info=True   相对路径吧。别写绝对了 --------------------编程问答--------------------
引用 8 楼 change_l 的回复:
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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,