以下是同学给我的一个数据库连接类,但看不太懂,请大神指点,越详细越好,多谢啦~~using System;
using System.Collections.Generic;
using System.Text;using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Xml;
using System.Configuration; /// <summary>
/// 数据库访问类
/// </summary>
public class TDB
{
private static TDB _DB = null; //PS.为什么这样声明,声明的是什么?
/// <summary>
/// 静态对象
/// </summary>
public static TDB DB
{
get {
if (_DB == null)
{
_DB = new TDB();
}
return _DB;
}
}
//以下是关于数据库连接,第一个为数据库地址,可以用ip地址;第二个是数据库名称;第三个是以什么形式进行访问,以windows身份登陆。\这个C#无法识别,再加一个\即可
private string _ConnectionString = "Data Source=MLJ-PC;Initial Catalog=db_hump;Integrated Security=True;";
/// <summary>
/// 连接串
/// </summary>
public string ConnectionString
{
get { return _ConnectionString; }
set { _ConnectionString = value; }
}
/// <summary>
/// 查询表
/// </summary>
/// <param name="ASQL">SQL</param>
/// <param name="APs">参数表</param>
/// <param name="AVs">参数值表</param>
/// <returns>返回表</returns>
public DataTable GetTable(string ASQL, string[] APs, object[] AVs)
{
DataTable Adt = new DataTable();
try {
SqlDataAdapter Adp = new SqlDataAdapter(ASQL, ConnectionString);
if (APs != null)
{
for (int i = 0; i < APs.Length; i++)
{
Adp.SelectCommand.Parameters.Add( new SqlParameter(APs[i], AVs[i]));
}
}
Adp.Fill( Adt);
Adp.Dispose();
Adp = null;
}
catch (Exception er) { ;}
return Adt;
}
/// <summary>
/// 查询表
/// </summary>
/// <param name="ASQL">SQL</param>
/// <returns>返回表</returns>
public DataTable GetTable(string ASQL)
{
return GetTable(ASQL, null, null);
}
/// <summary>
/// 执行操作
/// </summary>
/// <param name="ASQL">SQL</param>
/// <param name="APs">参数表</param>
/// <param name="AVs">参数值表</param>
/// <returns>是否成功</returns>
public Boolean DoExecute(string ASQL, string[] APs, object[] AVs)
{
Boolean ARes = false;
SqlConnection AConn = new SqlConnection(ConnectionString);
SqlCommand ACmd = new SqlCommand(ASQL, AConn);
try {
if (APs != null)
{
for (int i = 0; i < APs.Length; i++)
{
ACmd.Parameters.Add(new SqlParameter(APs[i], AVs[i]));
}
}
AConn.Open();
ACmd.ExecuteNonQuery();
ARes = true;
}
catch (Exception er) { ;}
return ARes;
}
/// <summary>
/// 执行操作
/// </summary>
/// <param name="ASQL">SQL</param>
/// <returns>是否成功</returns>
public Boolean DoExecute(string ASQL)//插入更新
{
return DoExecute(ASQL, null, null);
}
/// <summary>
/// 释放表
/// </summary>
/// <param name="Adt">表</param>
public void DoFreeTable(ref DataTable Adt)
{
if (Adt != null)
{
try
{
Adt.Clear();
Adt.Dispose();
Adt = null;
}
catch (Exception er) { ;}
}
}
/// <summary>
/// 返回新的ID
/// </summary>
/// <param name="ATable">表名</param>
/// <returns>新的ID</returns>
public int GetMaxID(string ATable)
{
int ARes = 0;
try {
string SQL = "Select Max(F_ID) as F_NewID From " + ATable;
DataTable Adt = GetTable(SQL);
if (Adt.Rows.Count > 0)
{
ARes = int.Parse(Adt.Rows[0]["F_NewID"].ToString());
}
DoFreeTable(ref Adt);
}
catch (Exception er) { ;}
return ARes;
}
/// <summary>
/// 新增数据
/// </summary>
/// <param name="ATable">表名</param>
/// <param name="AFs">字段名数组</param>
/// <param name="AVs">字段值数组</param>
/// <returns>是否成功</returns>
public Boolean DoInsert(string ATable, string[] AFs, object[] AVs)
{
Boolean ARes = false;
try {
string SQL = "Insert into " + ATable + " (";
for (int i = 0; i < AFs.Length; i++)
{
SQL += AFs[i] + ",";
}
SQL = SQL.Substring(0, SQL.Length - 1);
SQL += " ) Values ( ";
for (int i = 0; i < AFs.Length; i++)
{
SQL += "@AP" + AFs[i]+",";
}
SQL = SQL.Substring(0, SQL.Length - 1);
SQL += ")";
string[] APs = new string[AFs.Length];
for (int i = 0; i < AFs.Length; i++)
{
APs[i] = "@AP" + AFs[i];
}
ARes = DoExecute(SQL, APs, AVs);
}
catch (Exception er) { ;}
return ARes;
}
/// <summary>
/// 插入数据返回新的ID
/// </summary>
/// <param name="ATable">表名</param>
/// <param name="AFs">字段名数组</param>
/// <param name="AVs">字段值数组</param>
/// <returns>新的ID</returns>
public int DoInsertReturnID(string ATable, string[] AFs, object[] AVs)
{
int AID = 0;
try {
Boolean AFlag = DoInsert(ATable, AFs, AVs);
if (AFlag)
{
AID = GetMaxID(ATable);
}
}
catch (Exception er) { ;}
return AID;
} /// <summary>
/// 更新数据
/// </summary>
/// <param name="ATable">表名</param>
/// <param name="AFs">字段名数组</param>
/// <param name="AFVs">字段值数组</param>
/// <param name="AConds">条件字段名数组</param>
/// <param name="ACondValues">条件字段值数组</param>
/// <returns>是否成功</returns>
public Boolean DoUpdate(string ATable, string[] AFs, object[] AFVs, string[] AConds, object[] ACondValues)
{
Boolean ARes = false;
try
{
string SQL = "Update " + ATable + " Set "; for (int i = 0; i < AFs.Length; i++)
{
SQL += AFs[i] + "=@AP"+AFs[i]+",";
}
SQL = SQL.Substring(0, SQL.Length - 1);
SQL += " Where (1>0) ";
for (int i = 0; i < AConds.Length; i++)
{
SQL += " And "+ AConds[i] + "=@APC" + AConds[i] ;
}
string[] APs = new string[AFs.Length + AConds.Length];
object[] AVs = new object[APs.Length];
int n = 0;
for (int i = 0; i < AFs.Length; i++)
{
APs[n] = "@AP" + AFs[i];
AVs[n] = AFVs[i];
n++;
}
for (int i = 0; i < AConds.Length; i++)
{
APs[n] = "@APC" + AConds[i];
AVs[n] = ACondValues[i];
n++;
}
ARes = DoExecute(SQL, APs, AVs);
}
catch (Exception er) { ;}
return ARes;
}
}
数据库连接
using System.Collections.Generic;
using System.Text;using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Xml;
using System.Configuration; /// <summary>
/// 数据库访问类
/// </summary>
public class TDB
{
private static TDB _DB = null; //PS.为什么这样声明,声明的是什么?
/// <summary>
/// 静态对象
/// </summary>
public static TDB DB
{
get {
if (_DB == null)
{
_DB = new TDB();
}
return _DB;
}
}
//以下是关于数据库连接,第一个为数据库地址,可以用ip地址;第二个是数据库名称;第三个是以什么形式进行访问,以windows身份登陆。\这个C#无法识别,再加一个\即可
private string _ConnectionString = "Data Source=MLJ-PC;Initial Catalog=db_hump;Integrated Security=True;";
/// <summary>
/// 连接串
/// </summary>
public string ConnectionString
{
get { return _ConnectionString; }
set { _ConnectionString = value; }
}
/// <summary>
/// 查询表
/// </summary>
/// <param name="ASQL">SQL</param>
/// <param name="APs">参数表</param>
/// <param name="AVs">参数值表</param>
/// <returns>返回表</returns>
public DataTable GetTable(string ASQL, string[] APs, object[] AVs)
{
DataTable Adt = new DataTable();
try {
SqlDataAdapter Adp = new SqlDataAdapter(ASQL, ConnectionString);
if (APs != null)
{
for (int i = 0; i < APs.Length; i++)
{
Adp.SelectCommand.Parameters.Add( new SqlParameter(APs[i], AVs[i]));
}
}
Adp.Fill( Adt);
Adp.Dispose();
Adp = null;
}
catch (Exception er) { ;}
return Adt;
}
/// <summary>
/// 查询表
/// </summary>
/// <param name="ASQL">SQL</param>
/// <returns>返回表</returns>
public DataTable GetTable(string ASQL)
{
return GetTable(ASQL, null, null);
}
/// <summary>
/// 执行操作
/// </summary>
/// <param name="ASQL">SQL</param>
/// <param name="APs">参数表</param>
/// <param name="AVs">参数值表</param>
/// <returns>是否成功</returns>
public Boolean DoExecute(string ASQL, string[] APs, object[] AVs)
{
Boolean ARes = false;
SqlConnection AConn = new SqlConnection(ConnectionString);
SqlCommand ACmd = new SqlCommand(ASQL, AConn);
try {
if (APs != null)
{
for (int i = 0; i < APs.Length; i++)
{
ACmd.Parameters.Add(new SqlParameter(APs[i], AVs[i]));
}
}
AConn.Open();
ACmd.ExecuteNonQuery();
ARes = true;
}
catch (Exception er) { ;}
return ARes;
}
/// <summary>
/// 执行操作
/// </summary>
/// <param name="ASQL">SQL</param>
/// <returns>是否成功</returns>
public Boolean DoExecute(string ASQL)//插入更新
{
return DoExecute(ASQL, null, null);
}
/// <summary>
/// 释放表
/// </summary>
/// <param name="Adt">表</param>
public void DoFreeTable(ref DataTable Adt)
{
if (Adt != null)
{
try
{
Adt.Clear();
Adt.Dispose();
Adt = null;
}
catch (Exception er) { ;}
}
}
/// <summary>
/// 返回新的ID
/// </summary>
/// <param name="ATable">表名</param>
/// <returns>新的ID</returns>
public int GetMaxID(string ATable)
{
int ARes = 0;
try {
string SQL = "Select Max(F_ID) as F_NewID From " + ATable;
DataTable Adt = GetTable(SQL);
if (Adt.Rows.Count > 0)
{
ARes = int.Parse(Adt.Rows[0]["F_NewID"].ToString());
}
DoFreeTable(ref Adt);
}
catch (Exception er) { ;}
return ARes;
}
/// <summary>
/// 新增数据
/// </summary>
/// <param name="ATable">表名</param>
/// <param name="AFs">字段名数组</param>
/// <param name="AVs">字段值数组</param>
/// <returns>是否成功</returns>
public Boolean DoInsert(string ATable, string[] AFs, object[] AVs)
{
Boolean ARes = false;
try {
string SQL = "Insert into " + ATable + " (";
for (int i = 0; i < AFs.Length; i++)
{
SQL += AFs[i] + ",";
}
SQL = SQL.Substring(0, SQL.Length - 1);
SQL += " ) Values ( ";
for (int i = 0; i < AFs.Length; i++)
{
SQL += "@AP" + AFs[i]+",";
}
SQL = SQL.Substring(0, SQL.Length - 1);
SQL += ")";
string[] APs = new string[AFs.Length];
for (int i = 0; i < AFs.Length; i++)
{
APs[i] = "@AP" + AFs[i];
}
ARes = DoExecute(SQL, APs, AVs);
}
catch (Exception er) { ;}
return ARes;
}
/// <summary>
/// 插入数据返回新的ID
/// </summary>
/// <param name="ATable">表名</param>
/// <param name="AFs">字段名数组</param>
/// <param name="AVs">字段值数组</param>
/// <returns>新的ID</returns>
public int DoInsertReturnID(string ATable, string[] AFs, object[] AVs)
{
int AID = 0;
try {
Boolean AFlag = DoInsert(ATable, AFs, AVs);
if (AFlag)
{
AID = GetMaxID(ATable);
}
}
catch (Exception er) { ;}
return AID;
} /// <summary>
/// 更新数据
/// </summary>
/// <param name="ATable">表名</param>
/// <param name="AFs">字段名数组</param>
/// <param name="AFVs">字段值数组</param>
/// <param name="AConds">条件字段名数组</param>
/// <param name="ACondValues">条件字段值数组</param>
/// <returns>是否成功</returns>
public Boolean DoUpdate(string ATable, string[] AFs, object[] AFVs, string[] AConds, object[] ACondValues)
{
Boolean ARes = false;
try
{
string SQL = "Update " + ATable + " Set "; for (int i = 0; i < AFs.Length; i++)
{
SQL += AFs[i] + "=@AP"+AFs[i]+",";
}
SQL = SQL.Substring(0, SQL.Length - 1);
SQL += " Where (1>0) ";
for (int i = 0; i < AConds.Length; i++)
{
SQL += " And "+ AConds[i] + "=@APC" + AConds[i] ;
}
string[] APs = new string[AFs.Length + AConds.Length];
object[] AVs = new object[APs.Length];
int n = 0;
for (int i = 0; i < AFs.Length; i++)
{
APs[n] = "@AP" + AFs[i];
AVs[n] = AFVs[i];
n++;
}
for (int i = 0; i < AConds.Length; i++)
{
APs[n] = "@APC" + AConds[i];
AVs[n] = ACondValues[i];
n++;
}
ARes = DoExecute(SQL, APs, AVs);
}
catch (Exception er) { ;}
return ARes;
}
}
数据库连接
看教材吧首先创建连接对象: SqlConnection AConn = new SqlConnection(ConnectionString);
然后创建声明方法: SqlCommand ACmd = new SqlCommand(ASQL, AConn);
然后执行: AConn.Open();//打开
ACmd.ExecuteNonQuery();//执行sql语句
public class TDB //这个类是单实例,你可以查一下设计模式里面的单实例。这样做能保证只有一个实例。
然后创建声明方法: SqlCommand ACmd = new SqlCommand(ASQL, AConn);
然后执行: AConn.Open();//打开
ACmd.ExecuteNonQuery();//执行sql语句
这个是数据库连接:private string _ConnectionString = "Data Source=MLJ-PC;Initial Catalog=db_hump;Integrated Security=True;";
还有就是希望说一下这个主要是干什么的