`
jimly1032
  • 浏览: 16006 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

c# access数据库操作

    博客分类:
  • c#
 
阅读更多
在这里呆了两个月,不要说什么都没有学到吧。起码连个数据库,做个增删改查的东西还是可以的。朋友叫我写个连接access的东西,我立马说不用一个小时就可以了。谁知道还是弄了个大半天的。主要是有些操作上的不同。
主要是两张表:病人表(病人id,病人姓名,性别,病人地址,病人电话),病人就诊表(病人id,就诊时间)
1.获得连接,用OleDb
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;

namespace PatientManager.DLL
{
    /// <summary>
    /// 创建连接
    /// </summary>
    public class DbConnection
    {
        private OleDbConnection conn = null;
        /// <summary>
        /// 创建连接
        /// </summary>
        /// <returns>返回连接</returns>
        public OleDbConnection GetConnection()
        {
           //access2007的数据库连接字串。跟2003的是有区别的。
            String strconn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + "../../../db/patient.accdb;" + "User ID=Admin;Password=;";
            conn = new OleDbConnection(strconn);
            return conn;
        }
    }
}


2.实体
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PatientManager.DLL
{
    /// <summary>
    /// 病人信息
    /// </summary>
    public class Patient
    {
        private int patientId;

        public int PatientId
        {
            get { return patientId; }
            set { patientId = value; }
        }
        private string patientName;

        public string PatientName
        {
            get { return patientName; }
            set { patientName = value; }
        }
        private Boolean gender;

        public Boolean Gender
        {
            get { return gender; }
            set { gender = value; }
        }
        private string address;

        public string Address
        {
            get { return address; }
            set { address = value; }
        }
        private string phone;

        public string Phone
        {
            get { return phone; }
            set { phone = value; }
        }
        private DateTime times;

        public DateTime Times
        {
            get { return times; }
            set { times = value; }
        }
    }
}



3.操作数据库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data;

namespace PatientManager.DLL
{
    /// <summary>
    /// 数据库操作
    /// </summary>
    public class PatientProvider
    {
        private DbConnection db = new DbConnection();
        /// <summary>
        /// 根据id查找
        /// </summary>
        /// <param name="id">病人id</param>
        /// <returns>病人信息</returns>
        public Patient SearchById(int id)
        {
            Patient p = new Patient();
            OleDbConnection conn = db.GetConnection();
            string sql = "select * from Patient,TreamentTable where PatientId = @id";
            OleDbCommand command = new OleDbCommand(sql,conn);
            command.Parameters.Add("@id",OleDbType.BigInt).Value = id;
            conn.Open();
            using (OleDbDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    p.PatientId = Convert.ToInt32(reader["PatientId"]);
                    p.PatientName = reader["PatientName"].ToString();
                    p.Gender = Convert.ToBoolean(reader["Gender"]);
                    p.Address = reader["Address"].ToString();
                    p.Phone = reader["Phone"].ToString();
                    p.Times = DateTime.Parse(reader["Times"].ToString());
                }
            }
            conn.Close();
            return p;
        }

        /// <summary>
        /// 增加病人,采用事务处理,先增加病人表,再增加就诊表。
        /// </summary>
        /// <param name="p">病人信息</param>
        public void AddPatient(Patient p)
        {
            //创建连接 
            OleDbConnection conn = new OleDbConnection();
            conn = new DbConnection().GetConnection();
            //打开连接
            conn.Open();
            //创建事务
            OleDbTransaction tra = conn.BeginTransaction();
            string sql = "insert into Patient(PatientName,Gender,Address,Phone) values (@PatientName,@Gender,@Address,@Phone)";
            //dbCommand
            OleDbCommand command = new OleDbCommand(sql, conn);
            //添加参数
            command.Parameters.Add("@PatientName", OleDbType.VarChar, 20).Value = p.PatientName;
            command.Parameters.Add("@Gender", OleDbType.Boolean).Value = p.Gender;
            command.Parameters.Add("@Address", OleDbType.VarChar, 50).Value = p.Address;
            command.Parameters.Add("@Phone", OleDbType.VarChar, 20).Value = p.Phone;
            //事务
            command.Transaction = tra;
            //执行语句,要提交事务成功才执行
            command.ExecuteNonQuery();
            sql = "select Max(PatientId) as maxid from Patient";
            command = new OleDbCommand(sql, conn);
            command.Transaction = tra;
            int id = 0;
            using (OleDbDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    id = Convert.ToInt32(reader["maxid"]);
                }
            }
            sql = "insert into TreamentTable(id,Times) values (@id,@Times)";
            command = new OleDbCommand(sql, conn);
            command.Parameters.Add("@id", OleDbType.BigInt).Value = id;
            command.Parameters.Add("@Times", OleDbType.Date).Value = p.Times;
            command.Transaction = tra;
            command.ExecuteNonQuery();
            //提交事务
            tra.Commit();
            //关闭连接
            conn.Close();
        }

        /// <summary>
        /// 查找所有病人信息
        /// </summary>
        /// <returns>病人信息结果集</returns>
        public List<Patient> FindAll()
        {
            List<Patient> list = new List<Patient>();
            OleDbConnection conn = db.GetConnection();
            string sql = "SELECT * FROM Patient INNER JOIN TreamentTable ON Patient.PatientId = TreamentTable.id";
            OleDbCommand command = new OleDbCommand(sql, conn);
            conn.Open();
            using (OleDbDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    Patient p = new Patient();
                    p.PatientId = Convert.ToInt32(reader["PatientId"]);
                    p.PatientName = reader["PatientName"].ToString();
                    p.Gender = Convert.ToBoolean(reader["Gender"]);
                    p.Address = reader["Address"].ToString();
                    p.Phone = reader["Phone"].ToString();
                    p.Times = DateTime.Parse(reader["Times"].ToString());
                    list.Add(p);
                }
            }
            conn.Close();
            return list;
        }

        /// <summary>
        /// 删除病人信息,采用事务处理
        /// </summary>
        /// <param name="id">病人id</param>
        public void Delete(int id)
        {
            OleDbConnection conn = db.GetConnection();
            conn.Open();
            OleDbTransaction tra = conn.BeginTransaction();
            string sql = "delete from TreamentTable where id = @id";
            OleDbCommand command = new OleDbCommand(sql, conn);
            command.Parameters.Add("@id", OleDbType.BigInt).Value = id;
            command.Transaction = tra;
            command.ExecuteNonQuery();
            sql = "delete from Patient where PatientId = @id";
            command = new OleDbCommand(sql, conn);
            command.Parameters.Add("@id", OleDbType.BigInt).Value = id;
            command.Transaction = tra;
            command.ExecuteNonQuery();
            tra.Commit();
            conn.Close();
        }
        /// <summary>
        /// 更新病人信息,注意,主键id放在最后才可以更新。。。奇怪
        /// </summary>
        /// <param name="p">要修改的病人信息</param>
        public void Update(Patient p)
        {
            OleDbConnection conn = db.GetConnection();
            conn.Open();
            string sql = "update Patient set PatientName = @PatientName,Gender = @Gender,Address = @Address,Phone=@Phone where PatientId = @PatientId";
            OleDbCommand command = new OleDbCommand(sql, conn);
            command.Parameters.Add("@PatientName", OleDbType.VarChar, 20).Value = p.PatientName;
            command.Parameters.Add("@Gender", OleDbType.Boolean).Value = p.Gender;
            command.Parameters.Add("@Address", OleDbType.VarChar, 50).Value = p.Address;
            command.Parameters.Add("@Phone", OleDbType.VarChar, 20).Value = p.Phone;
            command.Parameters.Add("@PatientId", OleDbType.BigInt).Value = p.PatientId;
            command.ExecuteNonQuery();
            conn.Close();

        }
    }
}

分享到:
评论

相关推荐

    C# ACCESS 数据库操作类

    "C# ACCESS 数据库操作类"是一个自定义的C#类,设计用来简化对Access数据库的增、删、改、查等操作。这个类通常封装了ADO.NET的核心组件,如Connection、Command、DataAdapter和DataSet,使得代码更加模块化和易于...

    SQL数据库类 C#SQL数据库源码 C#SQL数据库源 SQL数据库访问 C#ACCESS数据库操作

    SQL数据库类 C#SQL数据库源码 C#SQL数据库源 SQL数据库访问 C#ACCESS数据库操作

    C#ACCESS数据库操作类源码

    在本案例中,"C# ACCESS数据库操作类源码"提供了一个便捷的方式,使开发者可以直接在C#项目中进行Microsoft Access数据库的操作。这个源码类包含了执行查询、更新、插入和删除等基本数据库操作的功能,对于初学者...

    ACCESS数据库类 ACCESS源码 C#ACCESS数据库操作 C#ACCESS数据库源

    根据给定的信息,我们可以深入探讨以下几个关键的...综上所述,`OleDbHelper`类为C#应用程序提供了高效且灵活的方式以操作ACCESS数据库,通过封装最佳实践,简化了数据库操作的复杂性,提高了代码的可读性和可维护性。

    c#access数据库操作

    以下是一些关于如何使用C#进行Access数据库操作的关键知识点: 1. **ADO.NET 和 ADOX**: ADO.NET是.NET框架中的数据访问组件,它包括了System.Data命名空间下的类,如DataSet、DataTable等。而ADOX是ActiveX Data ...

    C# Access 数据库操作实例

    在本文中,我们将深入探讨如何使用C#进行Access数据库的操作,包括数据库的连接、数据的添加、删除以及参数传递。Access数据库是Microsoft Office套件的一部分,它提供了一个轻量级的数据库解决方案,适用于小型到...

    C# Access数据库操作类 连接,查询,插入,删除,更新

    提供了一个用C#语言实现的Access数据库操作类,实现了对Access数据库(无访问密码或者设置了访问密码)的链接、查询、插入、删除、更新等功能,调用方便,操作简单,附有使用说明。如有问题,请发送邮件至gaocongly@...

    C#与Access数据库相关操作

    【C#与Access数据库操作详解】 C#编程语言在处理数据库方面提供了丰富的支持,特别是对于初学者来说,Access数据库是一个非常友好的选择。本文将详细介绍如何使用C#进行Access数据库的相关操作,包括连接数据库、...

    c#操作access数据库的简单例子

    在IT领域,特别是软件开发与数据库管理中,C#与Access数据库的结合是常见的应用场景之一。根据提供的文件信息,以下是对“C#操作Access数据库的简单例子”这一主题的深入解析,涵盖的知识点包括ADO.NET与OLEDB的使用...

    ACCESS数据库C#操作类

    ### ACCESS数据库C#操作类详解 #### 概述 在软件开发中,数据库操作是必不可少的一环,尤其在处理大量数据或实现复杂功能时。C#作为一种强大的面向对象的编程语言,提供了丰富的库来简化数据库操作。在本篇文章中...

    C#数据库操作类AccessHelper实例

    综上所述,AccessHelper是C#中处理Access数据库的一个实用工具,通过封装数据库连接和SQL执行,提供了方便且安全的数据库操作接口。在实际开发中,可以根据需要扩展这个类,添加更多功能,如参数化查询、存储过程...

    C#Access数据库操作.pdf

    ### C# 中 Access 数据库操作详解 #### 一、基础知识 **1.1 数据库引擎** 在使用 C# 进行 Access 数据库操作时,首先需要了解不同版本的 Access 使用的数据库引擎。对于 Access 2013 及以上版本,使用的数据库...

    Microsoft Access数据库操作类(C#)

    Microsoft Access数据库操作类是C#语言的,可实现对Microsoft Access数据库的增删改查询等操作,并且该操作类可实现对图片的存储

    C# 操作ACCESS数据库,可以对数据库进行添加,删除,修改操作

    这个DEMO程序不仅展示了基本的数据库操作,还演示了如何在同一个界面上完成这些操作,这对于初学者理解数据库交互和C#编程非常有帮助。通过实践和调整,你可以根据具体需求定制更复杂的功能,如查询、事务处理等。 ...

    C#Access数据库操作[文].pdf

    在C#编程中,进行Access数据库操作涉及到一系列的类和方法,主要集中在.NET框架的数据访问组件中。本文将深入解析这些关键概念,并提供一个简单的示例来演示如何使用C#与Access数据库进行交互。 首先,我们需要了解...

    使用C#开发的Access数据库创建、操作的源码项目工程

    这是一个使用C#开发的Access数据库创建、操作的源码工程,关于Access的所有操作已经单独创建了专门的类库包含相应的帮助类,可以直接生成后拿到任何项目中直接使用,高效简单,省去了从头开发Acess数据库的时间,将...

    C#操作ACCESS数据库,MDB文件读写

    在本场景中,我们关注的是如何使用C#操作Microsoft Access数据库(通常以.MDB文件格式存储)。Access数据库是一个关系型数据库管理系统,适用于小型到中型企业,提供了数据存储和管理的能力。下面将详细阐述如何使用...

    C# Access数据库同步 服务端

    本项目聚焦于使用C#实现Access数据库的同步,特别是在服务端环境下。Access数据库由于其易用性和轻量级特性,常被用于小型应用或作为临时数据存储解决方案。然而,当有多个地点或应用需要共享同一数据时,数据同步就...

    C#操作access数据库的例子

    在这个例子中,我们将深入探讨如何使用C#在Visual Studio 2005环境下操作Access数据库。 首先,你需要确保已经安装了Visual Studio 2005和Access数据库。创建一个新的C# Windows Forms应用程序项目,这将为你提供一...

    非常实用c#操作Access数据库的例子(application)

    本文介绍C#访问操作Access数据库的基础知识,并提供一个相关的例程。 1.通过ADO.NET的OleDb相关类来操作Access 主要知识点如下: using System.Data.OleDb; using System.Data; 连接字符串:String connectionString...

Global site tag (gtag.js) - Google Analytics