我是新手 刚学习Asp。Net没多久这个是我自己写的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace SQLHelper
{
public class SQLHelper
{
private static string ConnStr = ConfigurationManager.ConnectionStrings[""].ToString();
/// <summary>
/// 返回SqlDataReader
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static SqlDataReader QueryReader(string sql) {
SqlConnection conn = new SqlConnection(ConnStr);
conn.Open();
SqlCommand command = new SqlCommand(sql,conn);
return command.ExecuteReader(CommandBehavior.CloseConnection);
}
/// <summary>
/// 返回DataSet
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static DataSet QueryDataSet(string sql) {
SqlConnection conn = new SqlConnection(ConnStr);
SqlDataAdapter dapter = new SqlDataAdapter(sql,conn);
DataSet dataSet = new DataSet();
dapter.Fill(dataSet);
conn.Close();
return dataSet;
}
/// <summary>
/// 返回单行记录object
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static object QueryScalar(string sql) {
object ject = null;
using (SqlConnection conn = new SqlConnection(ConnStr))
{
conn.Open();
SqlCommand command = new SqlCommand(sql, conn);
ject = command.ExecuteScalar();
conn.Close();
}
return ject;
}
/// <summary>
/// 增,删,改 返回bool
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static bool NonQuery(string sql) {
SqlConnection conn = null;
SqlCommand command = null;
SqlTransaction tion = null;
int iRet = 0;
try
{
conn = new SqlConnection(ConnStr);
command = new SqlCommand(sql, conn);
conn.Open();
tion = conn.BeginTransaction();
command.Connection = conn;
command.Transaction = tion;
command.CommandText = sql;
iRet = command.ExecuteNonQuery();
tion.Commit();
return iRet == 0 ? false : true;
}
catch (Exception)
{ tion.Rollback();
}
finally {
if (conn.State==ConnectionState.Open)
{
conn.Close();
}
}
return iRet == 0 ? false : true;
}我在网上查过 一些老手 写的更简洁 但是很多地方不大懂 还有我想把存储过程也封装起来
/// <summary>
/// 存储过程--查询
/// </summary>
/// <param name="name">存储过程名</param>
/// <param name="para">入参</param>
/// <param name="OutPara">出参</param>
/// <param name="DbType">参数类型</param>
/// <param name="Size">参数大小</param>
/// <returns>返回SqlDataReader</returns>
public static SqlDataReader ReaderStorage(string name,SqlParameter[] para,SqlParameter[] OutPara,SqlDbType DbType,int Size) {}
这是我想到的 但是在传参的时候 参数类型 大小 都是无法确定的 请高手指点 希望能详细指点下 谢谢
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace SQLHelper
{
public class SQLHelper
{
private static string ConnStr = ConfigurationManager.ConnectionStrings[""].ToString();
/// <summary>
/// 返回SqlDataReader
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static SqlDataReader QueryReader(string sql) {
SqlConnection conn = new SqlConnection(ConnStr);
conn.Open();
SqlCommand command = new SqlCommand(sql,conn);
return command.ExecuteReader(CommandBehavior.CloseConnection);
}
/// <summary>
/// 返回DataSet
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static DataSet QueryDataSet(string sql) {
SqlConnection conn = new SqlConnection(ConnStr);
SqlDataAdapter dapter = new SqlDataAdapter(sql,conn);
DataSet dataSet = new DataSet();
dapter.Fill(dataSet);
conn.Close();
return dataSet;
}
/// <summary>
/// 返回单行记录object
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static object QueryScalar(string sql) {
object ject = null;
using (SqlConnection conn = new SqlConnection(ConnStr))
{
conn.Open();
SqlCommand command = new SqlCommand(sql, conn);
ject = command.ExecuteScalar();
conn.Close();
}
return ject;
}
/// <summary>
/// 增,删,改 返回bool
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static bool NonQuery(string sql) {
SqlConnection conn = null;
SqlCommand command = null;
SqlTransaction tion = null;
int iRet = 0;
try
{
conn = new SqlConnection(ConnStr);
command = new SqlCommand(sql, conn);
conn.Open();
tion = conn.BeginTransaction();
command.Connection = conn;
command.Transaction = tion;
command.CommandText = sql;
iRet = command.ExecuteNonQuery();
tion.Commit();
return iRet == 0 ? false : true;
}
catch (Exception)
{ tion.Rollback();
}
finally {
if (conn.State==ConnectionState.Open)
{
conn.Close();
}
}
return iRet == 0 ? false : true;
}我在网上查过 一些老手 写的更简洁 但是很多地方不大懂 还有我想把存储过程也封装起来
/// <summary>
/// 存储过程--查询
/// </summary>
/// <param name="name">存储过程名</param>
/// <param name="para">入参</param>
/// <param name="OutPara">出参</param>
/// <param name="DbType">参数类型</param>
/// <param name="Size">参数大小</param>
/// <returns>返回SqlDataReader</returns>
public static SqlDataReader ReaderStorage(string name,SqlParameter[] para,SqlParameter[] OutPara,SqlDbType DbType,int Size) {}
这是我想到的 但是在传参的时候 参数类型 大小 都是无法确定的 请高手指点 希望能详细指点下 谢谢
解决方案 »
- |zyciis| 如保将一个web.config文件,分开为多个config文件存放
- 问一下,在winform里面treeview控件有tag属性可以存一个object类型实例,
- 为什么出现用户密码输入窗口?
- 第一次做。大家帮我看看,给点意见
- 在ASP.Net中用DataGrid能不能合并单元格
- 自编组件(.dll)怎么更新数据库数据呀??
- 请问在asp.net中如何打印水晶报表
- 如果我的输入焦点在一个textbox时候,按回车键就执行一个后代码里的函数,我该如何实现呀???
- ?怎样将一段客户端的字符串生成一个htm的文件并保存到服务器端
- ◆立即给分◆怎样获取DataGrid页脚里控件的属性值??
- .NET 页面控件后台无法识别
- 有做过批量操作数据的高手来讨论一下啊.请问各位高手,怎么对ListBox的数据库批量删除,与添加啊???
1. 定义Model: 可以利用一些自定义特性将表结构定义好
2. SQL语句拼接类: 利用反射及泛型解析Model类,自动生成对应SQL
3. 执行类 : 用于执行SQL语句并返回对应数据类型(如object,string,datatable等) 封装存储过程参数可以利用数据进行传递。
概要的说一下,希望可以帮到你你所贴出来的代码应该只是基本实现了第三步
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace QS.DB
{
public class DB
{
public DB()
{
} //connStr为访问SQL Server2000的连接字符串
//说明:
//server=59.74.99.239
//59.74.99.239为数据库服务器IP地址
//在使用时,替换为使用的数据库服务器的IP地址
//database=xx8
//xx8在这里表示库名,
//在使用时,替换为使用的数据库的库名
//uid=sa
//password=sa // 下面是从webconfig获取数据库的联接字符串的方法
// string connStr = System.Configuration.ConfigurationSettings.AppSettings["sqlLink"];
// 下面是在webconfig里如何设置数据库的联接字符串的方法,和上面的一起配套使用
// <configuration>
// <appSettings>
// <add key="sqlLink" value="server=59.74.111.119;database=xx9;uid=sa;password=sa"/>
// </appSettings> //下面是临时调试使用的方法,直接设置联接字符串。
string connStr = "server=.;database=QSdatabase;uid=sa;password=sa";
//上面是临时调试使用的方法,直接设置联接字符串。
#region 获取查询结果,DataSet GetSqlDataSet(string sqlString)
/// <summary>
/// 获取查询结果。返回类型为DataSet
/// sqlString 参数为查询的SQL语句
/// </summary>
public DataSet GetSqlDataSet(string sqlString)
{
//定义返回变量
//实例化数据集DataSet,对象名为ds
DataSet ds = new DataSet();
DataTable dt = new DataTable();
try
{
//实例化连接对象SqlConnection,对象名为sqlConn
SqlConnection sqlConn = new SqlConnection(connStr); //用查询的SQL(sqlString)语句和连接对象sqlConn实例化数据接口SqlDataAdapter
//对象名为da
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn); //da.Fill(ds)是数据接口(SqlDataAdapter)提供的方法
//具体作用为:
//打开与数据库的连接
//将查询的SQL语句发送到数据库服务器
//接受返回的查询结果
//并将结果填充到数据集对象ds中
//关闭与数据库的连接
da.Fill(ds);
dt = ds.Tables[0]; }
catch (Exception e)
{
//抛出捕捉到的异常
throw (e);
}
//返回查询到的结果
return ds;
}
#endregion #region 执行增、删或改的SQL语句 int ExecuteSql(string sqlString)
/// <summary>
/// 执行增、删或改的SQL语句
/// 返回值为受影响的行数(记录数)
/// sqlString 参数为增、删或改的SQL语句
/// </summary>
public int ExecuteSql(string sqlString)
{
int i = 0;
try
{
////实例化连接对象SqlConnection,对象名为sqlConn
SqlConnection sqlConn = new SqlConnection(connStr); //用查询的SQL(sqlString)语句和连接对象sqlConn实例化SqlCommand
//对象名为sqlCmd
SqlCommand sqlCmd = new SqlCommand(sqlString, sqlConn); //打开与数据库的连接
sqlConn.Open(); //将增、删或改的SQL语句发送到数据库服务器
//并接受返回的结果,返回的结果为受影响的行数(记录数)
i = sqlCmd.ExecuteNonQuery(); //关闭与数据库的连接
sqlConn.Close();
}
catch (Exception e)
{
Exception ee = new Exception(sqlString + e.Message);
throw (ee);
}
return i;
}
#endregion }
}