在这里呆了两个月,不要说什么都没有学到吧。起码连个数据库,做个增删改查的东西还是可以的。朋友叫我写个连接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数据库的增、删、改、查等操作。这个类通常封装了ADO.NET的核心组件,如Connection、Command、DataAdapter和DataSet,使得代码更加模块化和易于...
SQL数据库类 C#SQL数据库源码 C#SQL数据库源 SQL数据库访问 C#ACCESS数据库操作
在本案例中,"C# ACCESS数据库操作类源码"提供了一个便捷的方式,使开发者可以直接在C#项目中进行Microsoft Access数据库的操作。这个源码类包含了执行查询、更新、插入和删除等基本数据库操作的功能,对于初学者...
根据给定的信息,我们可以深入探讨以下几个关键的...综上所述,`OleDbHelper`类为C#应用程序提供了高效且灵活的方式以操作ACCESS数据库,通过封装最佳实践,简化了数据库操作的复杂性,提高了代码的可读性和可维护性。
以下是一些关于如何使用C#进行Access数据库操作的关键知识点: 1. **ADO.NET 和 ADOX**: ADO.NET是.NET框架中的数据访问组件,它包括了System.Data命名空间下的类,如DataSet、DataTable等。而ADOX是ActiveX Data ...
在本文中,我们将深入探讨如何使用C#进行Access数据库的操作,包括数据库的连接、数据的添加、删除以及参数传递。Access数据库是Microsoft Office套件的一部分,它提供了一个轻量级的数据库解决方案,适用于小型到...
提供了一个用C#语言实现的Access数据库操作类,实现了对Access数据库(无访问密码或者设置了访问密码)的链接、查询、插入、删除、更新等功能,调用方便,操作简单,附有使用说明。如有问题,请发送邮件至gaocongly@...
【C#与Access数据库操作详解】 C#编程语言在处理数据库方面提供了丰富的支持,特别是对于初学者来说,Access数据库是一个非常友好的选择。本文将详细介绍如何使用C#进行Access数据库的相关操作,包括连接数据库、...
在IT领域,特别是软件开发与数据库管理中,C#与Access数据库的结合是常见的应用场景之一。根据提供的文件信息,以下是对“C#操作Access数据库的简单例子”这一主题的深入解析,涵盖的知识点包括ADO.NET与OLEDB的使用...
### ACCESS数据库C#操作类详解 #### 概述 在软件开发中,数据库操作是必不可少的一环,尤其在处理大量数据或实现复杂功能时。C#作为一种强大的面向对象的编程语言,提供了丰富的库来简化数据库操作。在本篇文章中...
综上所述,AccessHelper是C#中处理Access数据库的一个实用工具,通过封装数据库连接和SQL执行,提供了方便且安全的数据库操作接口。在实际开发中,可以根据需要扩展这个类,添加更多功能,如参数化查询、存储过程...
### C# 中 Access 数据库操作详解 #### 一、基础知识 **1.1 数据库引擎** 在使用 C# 进行 Access 数据库操作时,首先需要了解不同版本的 Access 使用的数据库引擎。对于 Access 2013 及以上版本,使用的数据库...
Microsoft Access数据库操作类是C#语言的,可实现对Microsoft Access数据库的增删改查询等操作,并且该操作类可实现对图片的存储
这个DEMO程序不仅展示了基本的数据库操作,还演示了如何在同一个界面上完成这些操作,这对于初学者理解数据库交互和C#编程非常有帮助。通过实践和调整,你可以根据具体需求定制更复杂的功能,如查询、事务处理等。 ...
在C#编程中,进行Access数据库操作涉及到一系列的类和方法,主要集中在.NET框架的数据访问组件中。本文将深入解析这些关键概念,并提供一个简单的示例来演示如何使用C#与Access数据库进行交互。 首先,我们需要了解...
这是一个使用C#开发的Access数据库创建、操作的源码工程,关于Access的所有操作已经单独创建了专门的类库包含相应的帮助类,可以直接生成后拿到任何项目中直接使用,高效简单,省去了从头开发Acess数据库的时间,将...
在本场景中,我们关注的是如何使用C#操作Microsoft Access数据库(通常以.MDB文件格式存储)。Access数据库是一个关系型数据库管理系统,适用于小型到中型企业,提供了数据存储和管理的能力。下面将详细阐述如何使用...
本项目聚焦于使用C#实现Access数据库的同步,特别是在服务端环境下。Access数据库由于其易用性和轻量级特性,常被用于小型应用或作为临时数据存储解决方案。然而,当有多个地点或应用需要共享同一数据时,数据同步就...
在这个例子中,我们将深入探讨如何使用C#在Visual Studio 2005环境下操作Access数据库。 首先,你需要确保已经安装了Visual Studio 2005和Access数据库。创建一个新的C# Windows Forms应用程序项目,这将为你提供一...
本文介绍C#访问操作Access数据库的基础知识,并提供一个相关的例程。 1.通过ADO.NET的OleDb相关类来操作Access 主要知识点如下: using System.Data.OleDb; using System.Data; 连接字符串:String connectionString...