C#处理SQL的两种小方法
2009-02-18 16:15
363 查看
方法一:
public DataTable GetDptLst()
{
using (DataAccesser da = DataAccesser.GetInstance())
{
Database database = da.InnerDatabase;
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT DPT_CD /r/n");
strSql.Append(" ,DPT_N /r/n");
strSql.Append(" ,DPT_DIFF /r/n");
strSql.Append("FROM " + importDbName + ".dbo.MyTable /r/n");
strSql.Append("WHERE Some Condition");
DbCommand command = database.GetSqlStringCommand(strSql.ToString());
DataTable tbl = new DataTable();
tbl.Columns.Add("DPT_CD", Type.GetType("System.String"));
tbl.Columns.Add("DPT_N", Type.GetType("System.String"));
tbl.Columns.Add("DPT_DIFF", Type.GetType("System.String"));
da.FillDataTable(command, tbl);
return tbl;
}
}
方法二:
public MyDataBase.P0101_VIEW_01DataTable FillGridView(string year, string period)
{
using (DataAccesser da = DataAccesser.GetInstance())
{
MyDataBase.P0101_VIEW_01DataTable tbl = new MyDataBase.P0101_VIEW_01DataTable();
try
{
Database database = da.InnerDatabase;
da.BeginTransaction();
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT * /r/n");
strSql.Append("FROM P0101_VIEW_01 /r/n");
strSql.Append("WHERE YEAR = ");
strSql.Append(" @YEAR AND /r/n");
strSql.Append(" SEASON = ");
strSql.Append(" @SEASON /r/n");
DbCommand command = database.GetSqlStringCommand(strSql.ToString());
SqlParameter[] prams = { new SqlParameter("@YEAR", SqlDbType.VarChar),
new SqlParameter("@SEASON", SqlDbType.VarChar) };
prams[0].Value = year;
prams[1].Value = period;
foreach (SqlParameter parameter in prams)
{
command.Parameters.Add(parameter);
}
da.FillDataTable(command, tbl);
}
catch (Exception ex)
{
throw ex;
}
return tbl;
}
}
二者的主要区别是对新定义的变量tbl的处理不同,方法一是定义为DataTable类型,方法二是定义为MyDataBase.P0101_VIEW_01DataTable类型.
通过方法二查找,要求查找P0101_VIEW_01DataTable的各个字段,而方法二则是查找什么字段,就再往tbl中添加什么字段(tbl.Columns.Add).
个人认为方法一比较好.
public DataTable GetDptLst()
{
using (DataAccesser da = DataAccesser.GetInstance())
{
Database database = da.InnerDatabase;
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT DPT_CD /r/n");
strSql.Append(" ,DPT_N /r/n");
strSql.Append(" ,DPT_DIFF /r/n");
strSql.Append("FROM " + importDbName + ".dbo.MyTable /r/n");
strSql.Append("WHERE Some Condition");
DbCommand command = database.GetSqlStringCommand(strSql.ToString());
DataTable tbl = new DataTable();
tbl.Columns.Add("DPT_CD", Type.GetType("System.String"));
tbl.Columns.Add("DPT_N", Type.GetType("System.String"));
tbl.Columns.Add("DPT_DIFF", Type.GetType("System.String"));
da.FillDataTable(command, tbl);
return tbl;
}
}
方法二:
public MyDataBase.P0101_VIEW_01DataTable FillGridView(string year, string period)
{
using (DataAccesser da = DataAccesser.GetInstance())
{
MyDataBase.P0101_VIEW_01DataTable tbl = new MyDataBase.P0101_VIEW_01DataTable();
try
{
Database database = da.InnerDatabase;
da.BeginTransaction();
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT * /r/n");
strSql.Append("FROM P0101_VIEW_01 /r/n");
strSql.Append("WHERE YEAR = ");
strSql.Append(" @YEAR AND /r/n");
strSql.Append(" SEASON = ");
strSql.Append(" @SEASON /r/n");
DbCommand command = database.GetSqlStringCommand(strSql.ToString());
SqlParameter[] prams = { new SqlParameter("@YEAR", SqlDbType.VarChar),
new SqlParameter("@SEASON", SqlDbType.VarChar) };
prams[0].Value = year;
prams[1].Value = period;
foreach (SqlParameter parameter in prams)
{
command.Parameters.Add(parameter);
}
da.FillDataTable(command, tbl);
}
catch (Exception ex)
{
throw ex;
}
return tbl;
}
}
二者的主要区别是对新定义的变量tbl的处理不同,方法一是定义为DataTable类型,方法二是定义为MyDataBase.P0101_VIEW_01DataTable类型.
通过方法二查找,要求查找P0101_VIEW_01DataTable的各个字段,而方法二则是查找什么字段,就再往tbl中添加什么字段(tbl.Columns.Add).
个人认为方法一比较好.
相关文章推荐
- Oracle where条件为In并且为拼接SQL时 C#中的处理方法
- C#使用预处理SQL语句访问MySQL的方法(Parameter)
- C#使用预处理SQL语句访问MySQL的方法(Parameter)
- C# B/S程序中出现“异常详细信息: System.Data.SqlClient.SqlException: 用户 'XXX/ASPNET' 登录失败。”的处理方法
- C# 向数据库中添加 修改数据库的两种方法Sql语句和update(dataSet)
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- C#(.net)中的一次连接数据库执行多条sql语句(两种方法)
- c#中处理关于SQL中BLOG大数据的方法
- php消息队列处理实践 ,利用AMQP和redis两种方法
- C#读写txt文件的两种方法介绍
- C#对于字符串的处理类(剪裁、过滤危险字符、替换sql中有问题符号等)
- [C#]时间比较的两种方法
- C#连接sql server windows 和 sqlserver(2000/05/08) 身份验证的两种连接字符串
- RSS制作(C#) - 使用XML DOM和XmlTextWriter(见评论)两种方法
- C# 数据库sql中用参数的方法来执行UPDATE命令,实现更新dataTime类型
- 总结几种C#窗体间通讯的处理方法
- 如何C#中实现在TreeView查找某一节点(两种方法)
- C# 两种启动bat文件方法的区别——关键在于进程的工作目录
- 在C#中利用Keep-Alive处理Socket网络异常断开的方法
- C#将Excel数据表导入SQL数据库的两种方法(转)