用存储过程啊,这个写起来方便internal class WSqlCommand : IDisposable
{
private SqlCommand m_SqlCmd = null;
private string m_connStr = "";
/// <summary>
/// 默认构造方法.
/// </summary>
/// <param name="connectionString">连接字符串.</param>
/// <param name="commandText">命令文本.</param>
public WSqlCommand(string connectionString,string commandText)
{
m_connStr = connectionString;
m_SqlCmd = new SqlCommand(commandText);
m_SqlCmd.CommandType = CommandType.StoredProcedure;
m_SqlCmd.CommandTimeout = 180;
} public WSqlCommand(string connectionString)
{
m_connStr = connectionString;
m_SqlCmd = new SqlCommand();
m_SqlCmd.CommandType = CommandType.Text;
m_SqlCmd.CommandTimeout = 180;
} #region function Dispose public void Dispose()
{
if(m_SqlCmd != null)
{
m_SqlCmd.Dispose();
}
} #endregion
#region function AddParameter /// <summary>
/// 添加SQL命令参数
/// </summary>
/// <param name="name">参数 名称.</param>
/// <param name="dbType">参数 MSSQL数据类型</param>
/// <param name="value">参数 值</param>
public void AddParameter(string name,SqlDbType dbType,object value)
{
SqlDbType dbTyp = dbType;
object val = value; if(val is DateTime)
{
DateTime date = (DateTime)value;
val = new DateTime(date.Year,date.Month,date.Day,date.Hour,date.Minute,0,0);
} if(dbType == SqlDbType.UniqueIdentifier)
{
dbTyp = SqlDbType.NVarChar;
string guid = val.ToString();
if(guid.Length < 1)
{
return;
}
} m_SqlCmd.Parameters.Add(name,dbTyp).Value = val;
} #endregion #region fucntion Execute /// <summary>
/// 执行命令.
/// </summary>
/// <returns>返回DataSet类型</returns>
public DataSet Execute()
{
DataSet dsRetVal = null; using(SqlConnection con = new SqlConnection(m_connStr))
{
con.Open();
m_SqlCmd.Connection = con;
dsRetVal = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(m_SqlCmd);
adapter.Fill(dsRetVal); adapter.Dispose();
} return dsRetVal;
}
public int ExecuteNonQuery()
{
int i=-1;
using(SqlConnection con = new SqlConnection(m_connStr))
{
con.Open();
m_SqlCmd.Connection = con;
i=m_SqlCmd.ExecuteNonQuery();
}
return i;
}
#endregion
#region Properties Implementaion /// <summary>
/// 获取或设置命令超时时间.
/// </summary>
public int CommandTimeout
{
get{ return m_SqlCmd.CommandTimeout; } set{ m_SqlCmd.CommandTimeout = value; }
} /// <summary>
/// 获取或设置命令类型.
/// </summary>
public CommandType CommandType
{
get{ return m_SqlCmd.CommandType; }
set{ m_SqlCmd.CommandType = value; }
}
public string CommandText
{
get{return m_SqlCmd.CommandText;}
set{m_SqlCmd.CommandText=value; }
}
#endregion }
{
private SqlCommand m_SqlCmd = null;
private string m_connStr = "";
/// <summary>
/// 默认构造方法.
/// </summary>
/// <param name="connectionString">连接字符串.</param>
/// <param name="commandText">命令文本.</param>
public WSqlCommand(string connectionString,string commandText)
{
m_connStr = connectionString;
m_SqlCmd = new SqlCommand(commandText);
m_SqlCmd.CommandType = CommandType.StoredProcedure;
m_SqlCmd.CommandTimeout = 180;
} public WSqlCommand(string connectionString)
{
m_connStr = connectionString;
m_SqlCmd = new SqlCommand();
m_SqlCmd.CommandType = CommandType.Text;
m_SqlCmd.CommandTimeout = 180;
} #region function Dispose public void Dispose()
{
if(m_SqlCmd != null)
{
m_SqlCmd.Dispose();
}
} #endregion
#region function AddParameter /// <summary>
/// 添加SQL命令参数
/// </summary>
/// <param name="name">参数 名称.</param>
/// <param name="dbType">参数 MSSQL数据类型</param>
/// <param name="value">参数 值</param>
public void AddParameter(string name,SqlDbType dbType,object value)
{
SqlDbType dbTyp = dbType;
object val = value; if(val is DateTime)
{
DateTime date = (DateTime)value;
val = new DateTime(date.Year,date.Month,date.Day,date.Hour,date.Minute,0,0);
} if(dbType == SqlDbType.UniqueIdentifier)
{
dbTyp = SqlDbType.NVarChar;
string guid = val.ToString();
if(guid.Length < 1)
{
return;
}
} m_SqlCmd.Parameters.Add(name,dbTyp).Value = val;
} #endregion #region fucntion Execute /// <summary>
/// 执行命令.
/// </summary>
/// <returns>返回DataSet类型</returns>
public DataSet Execute()
{
DataSet dsRetVal = null; using(SqlConnection con = new SqlConnection(m_connStr))
{
con.Open();
m_SqlCmd.Connection = con;
dsRetVal = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(m_SqlCmd);
adapter.Fill(dsRetVal); adapter.Dispose();
} return dsRetVal;
}
public int ExecuteNonQuery()
{
int i=-1;
using(SqlConnection con = new SqlConnection(m_connStr))
{
con.Open();
m_SqlCmd.Connection = con;
i=m_SqlCmd.ExecuteNonQuery();
}
return i;
}
#endregion
#region Properties Implementaion /// <summary>
/// 获取或设置命令超时时间.
/// </summary>
public int CommandTimeout
{
get{ return m_SqlCmd.CommandTimeout; } set{ m_SqlCmd.CommandTimeout = value; }
} /// <summary>
/// 获取或设置命令类型.
/// </summary>
public CommandType CommandType
{
get{ return m_SqlCmd.CommandType; }
set{ m_SqlCmd.CommandType = value; }
}
public string CommandText
{
get{return m_SqlCmd.CommandText;}
set{m_SqlCmd.CommandText=value; }
}
#endregion }
解决方案 »
- 想用c#向目标窗体发送按键消息,具体的一些方法
- 如何填充转圈有规律的二维数组?
- vc 用winPcap捕获的数据包与用c# socket接收到的数据包问题
- 怎样将文件保存到输出目录的上一级
- ASP.NET生成的作者域明明是我的名字(中文)却无法生效,在作者域手工敲一遍我的名字马上就生效,但是再把原来自动生成的名字拷回去马上
- 一个WINFORM的的简单问题
- winform当中,DataGrid某一列如何绑定图片呢?
- 怎样把类的对象存到access的字段中,字段的数据类型是Ole object.
- 将文件拷贝到指定目录问题
- 哪里有vs2003中文企业版下载(7CD)?
- 请教
- 关于DataGrid的一个很难的问题!!
public DataView GetUser(string Account)
{
using(WSqlCommand sqlCmd = new WSqlCommand(m_ConStr,"disku_GetUser"))
{
sqlCmd.AddParameter("@Account" ,SqlDbType.NVarChar,Account);
DataSet ds = sqlCmd.Execute();
ds.Tables[0].TableName = "User"; return ds.Tables["User"].DefaultView;
}
} 其实用法很多,这个是我常用的一个,调用方便,不用写一大堆参数
另外自动释放连接
Data Access Application Block for .NET