c#做DLL封装了一 数据库,该怎么写连接字符串? 
写成这样string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
              + System.IO.Directory.GetCurrentDirectory() + "\\capdata.mdb";
当在EXE中调用提示找不到capdata.mdb数据库啊?

解决方案 »

  1.   

    可是数据库已经在DLL中啊?
    总得知道它的路径才能操作数据库把?
      

  2.   

    运行时才需要,可以按1楼的方法传入.
    另外,CurrentDirectory是你放数据库文件的那个文件夹吗?
      

  3.   

    引用System.Windows.Form.Dll,然后用Application.StartPath
      

  4.   

    我倒...
    我知道是数据库路径名称啊,问题是数据库封装在DLL中,我不知道该怎么写这路径,没有做过哇。
    大家能不能写个例子啊,简单一行就行啊
      

  5.   

    修改你的DLL中的代码,加入一个可设定连接字符串的方法之类,将连接字符串在运行时设定.
      

  6.   

    晕...
     写得嫩复杂...
       封装.DLL用访问修饰符.
     连接数据库....晕了..
      难道就一种访问方式.改个..晕.
     访问地址干嘛,直接访问数据库..
      

  7.   

    建议还是把连接串做在Config文件或者注册表中,部署的时候会轻松很多
      

  8.   

    个人觉得没必要封装成DLL,直接把*.mdb,改成*.dll MS也可以,想想楼主就是不想要别人看到数据库吧!
      

  9.   

    LZ可能是把数据库嵌入到DLL中去了,下面是一下调用嵌入资源的例子!看你的领悟能力了
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Reflection;
    using System.IO;
    using System.Diagnostics;namespace ResourceDemo
    {
        /// <summary>
        /// Summary description for Form1.
        /// </summary>
        public class Form1 : System.Windows.Forms.Form
        {
            ArrayList pics;
            private System.Windows.Forms.GroupBox groupBox1;
            private System.Windows.Forms.PictureBox pBox;
            private System.Windows.Forms.Button btnDisplay;
            private System.Windows.Forms.TextBox txtInfo;
            /// <summary>
            /// Required designer variable.
            /// </summary>
            private System.ComponentModel.Container components = null;        public Form1()
            {
                //
                // Required for Windows Form Designer support
                //
                InitializeComponent();            // Instantiate our ArrayList
                pics = new ArrayList();
            }        /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            protected override void Dispose(bool disposing)
            {
                if (disposing)
                {
                    if (components != null)
                    {
                        components.Dispose();
                    }
                }
                base.Dispose(disposing);
            }        #region Windows Form Designer generated code
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {
                this.pBox = new System.Windows.Forms.PictureBox();
                this.groupBox1 = new System.Windows.Forms.GroupBox();
                this.btnDisplay = new System.Windows.Forms.Button();
                this.txtInfo = new System.Windows.Forms.TextBox();
                this.groupBox1.SuspendLayout();
                this.SuspendLayout();
                // 
                // pBox
                // 
                this.pBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
                this.pBox.Location = new System.Drawing.Point(8, 8);
                this.pBox.Name = "pBox";
                this.pBox.Size = new System.Drawing.Size(264, 272);
                this.pBox.TabIndex = 0;
                this.pBox.TabStop = false;
                this.pBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
                // 
                // groupBox1
                // 
                this.groupBox1.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                                        this.txtInfo,
                                                                                        this.btnDisplay});
                this.groupBox1.Location = new System.Drawing.Point(288, 8);
                this.groupBox1.Name = "groupBox1";
                this.groupBox1.Size = new System.Drawing.Size(192, 264);
                this.groupBox1.TabIndex = 1;
                this.groupBox1.TabStop = false;
                // 
                // btnDisplay
                // 
                this.btnDisplay.Location = new System.Drawing.Point(48, 24);
                this.btnDisplay.Name = "btnDisplay";
                this.btnDisplay.Size = new System.Drawing.Size(96, 23);
                this.btnDisplay.TabIndex = 0;
                this.btnDisplay.Text = "Display Picture";
                this.btnDisplay.Click += new System.EventHandler(this.button1_Click);
                // 
                // txtInfo
                // 
                this.txtInfo.Location = new System.Drawing.Point(8, 56);
                this.txtInfo.Multiline = true;
                this.txtInfo.Name = "txtInfo";
                this.txtInfo.ReadOnly = true;
                this.txtInfo.Size = new System.Drawing.Size(176, 200);
                this.txtInfo.TabIndex = 2;
                this.txtInfo.Text = "txtInfo";
                // 
                // Form1
                // 
                this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
                this.ClientSize = new System.Drawing.Size(496, 293);
                this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                              this.groupBox1,
                                                                              this.pBox});
                this.Name = "Form1";
                this.Text = "Form1";
                this.Load += new System.EventHandler(this.Form1_Load);
                this.groupBox1.ResumeLayout(false);
                this.ResumeLayout(false);        }
            #endregion        /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.Run(new Form1());
            }        private void button1_Click(object sender, System.EventArgs e)
            {
                // go to a random picture in our arraylist and
                // display it
                Random generator = new Random();
                Bitmap bmp = pics[generator.Next(pics.Count)] as Bitmap;
                if (!(null == bmp))
                {
                    pBox.Image = bmp;
                }
                bmp = null;
                generator = null;
            }        private void Form1_Load(object sender, System.EventArgs e)
            {
                Stream imgStream = null;
                Bitmap bmp = null;            // get a reference to the current assembly
                Assembly a = Assembly.GetExecutingAssembly();            // get a list of resource names from the manifest
                string[] resNames = a.GetManifestResourceNames();            // populate the textbox with information about our resources
                // also look for images and put them in our arraylist
                txtInfo.Clear();            txtInfo.Text += String.Format("Found {0} resources\r\n", resNames.Length);
                txtInfo.Text += "----------\r\n";
                foreach (string s in resNames)
                {
                    txtInfo.Text += s + "\r\n";
                    if (s.EndsWith(".bmp"))
                    {
                        // attach to stream to the resource in the manifest
                        imgStream = a.GetManifestResourceStream(s);
                        if (!(null == imgStream))
                        {
                            // create a new bitmap from this stream and 
                            // add it to the arraylist
                            bmp = Bitmap.FromStream(imgStream) as Bitmap;
                            if (!(null == bmp))
                            {
                                pics.Add(bmp);
                            }
                            bmp = null;
                            imgStream.Close();
                            imgStream = null;
                        }
                    }
                }
                txtInfo.Text += "----------\r\n";
                txtInfo.Text += String.Format("Found {0} Bitmaps\r\n",
                    pics.Count);
            }
        }
    }