无法从数据层读取数据

时间:2014-02-11 07:38:32

标签: c# .net dll 3-tier

我在c#中做了3层架构的基本示例。我为数据和业务层创建了两个dll。我也在业务层代码中使用数据层dll。并且,表示层中的业务dll和数据访问dll(这是一个winform应用程序。)现在,当执行表示层代码时,会出现一个例外:

  

数据库   'd:\ 11feb \实践\ 3TIER \表示层\表示层\ BIN \调试\ Data.mdf'   不存在。

我在数据层中创建了数据库Data.mdf。 我将数据库文件复制到异常中提到的位置,并且应用程序已成功执行。但我希望从我的数据层访问数据库。

数据层代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace DataAccessLayer
{
    public class DataAccess
    {
        public DataTable dataRead()
        {

            SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Data.mdf;Database=Data;Integrated Security=True;User Instance=True");
            DataTable dt = new DataTable();
            con.Open();
            SqlCommand cmd = new SqlCommand("select ID,Name from datatable", con);
            try
            {
                SqlDataReader rd = cmd.ExecuteReader();
                dt.Load(rd);
                return dt;
                }
                catch
                {
                    throw;
                }

            }
        }
    }

业务层代码:

      using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using DataAccessLayer;
        using System.Data;

        namespace BusinessLogicLayer
        {
            public class BusinessLogic
            {
                DataAccess dataAccess = new DataAccess();

                public DataTable getPersons() 
                {
                    try
                    {
                        return dataAccess.dataRead();
                    }
                    catch { throw; }
                }
            }
        }

表示层代码:

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 BusinessLogicLayer;

namespace PresentationLayer
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                BusinessLogic BusinessLogic = new BusinessLogic();
                this.dataGridView1.DataSource = BusinessLogic.getPersons();
            }
            catch
            {
                MessageBox.Show("Error Occurred");
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

问题是您在解决方案中添加了Data.mdf,但是当应用程序运行时,它会尝试在bin目录中找到mdf文件。单击解决方案中的Data.mdf文件。转到其属性(按F4键),然后查找“复制到输出目录”属性,然后将值更改为“始终复制”。

还要检查你的连接字符串。