📄 tsqldb.cs
字号:
using System;
using System.Data;
using System.Data.SqlClient;
namespace _lib
{
/// <summary>
/// SQL Server数据库中对应的一个单独数据条目。
/// 作者:张宁
/// 建立:2004.9.29
/// </summary>
public class TSqlDBItem
{
private object FObject; // 唯一的私有成员,存放转换前的原始数据
public TSqlDBItem(object Obj)
{
FObject = Obj;
}
public override string ToString()
{
string Result = "";
if (FObject!=null)
Result = FObject.ToString();
return Result;
}
public int ToInt()
{
int Result = 0;
if ((FObject!=null)&&(FObject.ToString()!=""))
Result = System.Convert.ToInt16(FObject);
return Result;
}
public DateTime ToDateTime()
{
DateTime Result = DateTime.Now;
if ((FObject!=null)&&(FObject.ToString()!=""))
Result = System.Convert.ToDateTime(FObject);
return Result;
}
}
/// <summary>
/// SQL Server数据库对象。
/// 作者:张宁
/// 建立:2004.7.1
/// </summary>
public class TSqlDB
{
public static readonly string ZeroUniqueID="{00000000-0000-0000-0000-000000000000}"; // 代表一个不存在的编号
private string FConnString;
private string FQueryString;
private int FCurrIndex=0; // 当前数据游标位置
private System.Data.SqlClient.SqlConnection FConnection;
private System.Data.SqlClient.SqlCommand FCommand;
private System.Data.SqlClient.SqlDataAdapter FDataAdapter;
private System.Data.DataSet FDataSet;
#region 构造方法
/// <summary>
/// TSqlDB 的默认构造方法。
/// 创建对象,不打开结果集,之后可以用OpenRset方法打开
/// </summary>
public TSqlDB()
{
FConnString= GetConnString();
Initial("");
}
/// <summary>
/// TSqlDB 的带查询的构造方法。
/// 创建对象,打开查询对应的结果集
/// </summary>
public TSqlDB(string Query)
{
FConnString= GetConnString();
Initial(Query);
}
#endregion
#region 私有方法
/// <summary>
/// (静态)返回数据库连接串。
/// </summary>
protected static string GetConnString()
{
return System.Configuration.ConfigurationSettings.AppSettings["ConnStr"];
}
/// <summary>
/// 初始化:建立连接、命令、适配器、结果集对象
/// </summary>
private void Initial(string init_sql)
{
FConnection = new SqlConnection(FConnString);
FConnection.Open();
FCommand = new SqlCommand();
FCommand.Connection = FConnection;
FCommand.CommandText = init_sql;
FQueryString= init_sql;
FDataAdapter = new SqlDataAdapter();
FDataAdapter.SelectCommand = FCommand;
//FDataAdapter.TableMappings.Add("Table","v_DBUser");
FDataSet = new DataSet();
if (init_sql.Length>0)
FDataAdapter.Fill(FDataSet);
}
/// <summary>
/// SQL串编码 --> 单引号 变为 两个单引号
/// </summary>
private static string sqlEncode(string sqlString)
{
string Result= "";
for (int i=0; i<sqlString.Length; i++)
Result+= (sqlString[i]=='\'' ? "\'\'" : sqlString[i]+"");
return Result;
}
#endregion
#region 公有属性
public TSqlDBItem this[string index] // 缺省索引器
{
get
{
object Result;
try
{
Result = FDataSet.Tables[0].Rows[FCurrIndex][index];
}
catch (ArgumentException e)
{
Result = "无此字段名("+index+")<br>"+e.Message;
}
catch (Exception e)
{
Result = "结果集中无记录<br>"+e.Message;
}
return new TSqlDBItem(Result);
}
}
public bool MoveNext() // 向后移动数据游标
{
if (!EOF)
{
FCurrIndex++;
return true;
}
return false;
}
public bool EOF // 是否到达数据尾部
{
get
{
return FCurrIndex>=Rows.Count;
}
}
public DataRowCollection Rows // 标的行集
{
get
{
return FDataSet.Tables[0].Rows;
}
}
public DataColumnCollection Columns // 标的列集
{
get
{
return FDataSet.Tables[0].Columns;
}
}
public DataView DataSource // 提供一个可供利用的数据源
{
get
{
return FDataSet.Tables[0].DefaultView;
}
}
#endregion
#region 公有方法
/// <summary>
/// (静态)执行一个查询,返回受影响的行数。
/// 用于执行insert、update、delete。
/// </summary>
public static int ExecuteNonQuery(string Query)
{
int Result;
SqlConnection myConnection = new SqlConnection(GetConnString());
myConnection.Open();
SqlCommand myCommand = new SqlCommand(Query, myConnection);
Result= myCommand.ExecuteNonQuery();
myConnection.Close();
return Result;
}
/// <summary>
/// (静态)执行一个查询,返回结果集中第一行的第一列。
/// 用于执行count()、sum()等统计函数。
/// </summary>
public static int ExecuteScalar(string Query)
{
Int32 Result;
SqlConnection myConnection = new SqlConnection(GetConnString());
myConnection.Open();
SqlCommand myCommand = new SqlCommand(Query, myConnection);
Result= (Int32)myCommand.ExecuteScalar();
myConnection.Close();
return Result;
}
/// <summary>
/// 执行一个查询,返回受影响的行数。
/// 用于执行insert、update、delete。
/// </summary>
public int Execute(string Query)
{
int Result;
FCommand.CommandText = Query;
Result= FCommand.ExecuteNonQuery();
FQueryString= Query;
return Result;
}
/// <summary>
/// 执行已有查询,返回受影响的行数,结果集装载到内置对象中。
/// </summary>
public int Reload()
{
int Result;
FCommand.CommandText = FQueryString;
Result= FDataAdapter.Fill(FDataSet);
return Result;
}
/// <summary>
/// 执行一个查询,返回受影响的行数,结果集装载到内置对象中。
/// 用于执行select。
/// </summary>
public int OpenRset(string Query)
{
int Result;
FCommand.CommandText = Query;
Result= FDataAdapter.Fill(FDataSet);
FQueryString= Query;
return Result;
}
/// <summary>
/// 释放数据库连接。
/// </summary>
public void Free()
{
if (FDataSet!=null)
FDataSet.Dispose();
if (FConnection!=null)
{
FConnection.Close();
FConnection.Dispose();
FConnection= null;
}
if (FCommand!=null)
FCommand.Dispose();
if (FDataAdapter!=null)
FDataAdapter.Dispose();
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -