jyk 金色海洋工作室 ASP.NET经验总结
金色海洋工作室 ASP.NET经验总结
登录
注册
全站
当前博客
空间
博客
好友
相册
留言
jyk
最近评论
zhuds:
呵呵,原创的东西,都支持
sohocat:
对存储过程的看法不敢苟同,如果你面对注入攻击与最大可能让用户输入字符的选择时,你就知道存储过程的好处了。
我个人使用中感觉存储过程的安全性才是最大的优点,也是不可替代的。
至于效率倒是锦上添花的事了。
无论你验证程序写的多严谨,都不可能完全杜绝注入,而且代价是禁止用户输入这输入那,给用户很多不良体验。
caishbian:
没搞懂
woghghghg:
哈,能否把iis的配置也说明一下啊,我晕~~~
jyk:
其实封装也是很简单的事情。现在已经做好了 50% 了,省级后可以80%以上。
最难的是主从表一起添加的情况。还有就是很复杂的控件排列方式。
文章分类
程序(特指网站)架构
(RSS)
分页系列
(RSS)
技巧
(RSS)
数据访问层
(RSS)
算法
(RSS)
转载
(RSS)
收藏
相册
存档
2008年07月(2)
2007年03月(6)
2007年02月(4)
2007年01月(1)
2006年12月(3)
2006年08月(9)
2006年06月(1)
2006年05月(1)
2006年03月(7)
软件项目交易
订阅我的博客
我的数据访问层的源代码(二)
收藏
新一篇: 我的数据访问层的源代码(三)
|
旧一篇: 我的数据访问层的源代码(一)
//
查询语句部分
运行查询语句返回记录(DataSet、DataTable、DataRow、String[]、String)
#region
运行查询语句返回记录(DataSet、DataTable、DataRow、String[]、String)
/**/
///
<summary>
///
运行SQL查询语句 返回DataSet。可以传入多条查询语句,返回的DataSet里会有多个DataTable
///
</summary>
///
<param name="SQL">
查询语句。比如select * from tableName
</param>
///
<returns>
返回DataSet
</returns>
函数实现 — — RunSqlDataSet
#region
函数实现 — — RunSqlDataSet
public
DataSet RunSqlDataSet(
string
SQL)
...
{
SetCommand(SQL,
1
);
//
设置command
SqlDataAdapter da
=
new
SqlDataAdapter(cm);
try
...
{
DataSet DS
=
new
DataSet();
da.Fill(DS);
return
DS;
}
catch
(Exception ex)
...
{
SetErrorMsg(
"
RunSqlDataSet
"
,SQL,ex.Message );
//
处理错误
return
null
;
}
finally
...
{
//
自动关闭了,不用手动关闭。
da.Dispose();
}
}
#endregion
/**/
///
<summary>
///
运行SQL查询语句 返回DataTable。
///
</summary>
///
<param name="SQL">
查询语句。比如select * from tableName
</param>
///
<returns>
返回DataTable
</returns>
函数实现 — — RunSqlDataTable
#region
函数实现 — — RunSqlDataTable
public
DataTable RunSqlDataTable(
string
SQL)
...
{
SetCommand(SQL,
1
);
//
设置command
SqlDataAdapter da
=
new
SqlDataAdapter(cm);
try
...
{
DataTable DT
=
new
DataTable();
da.Fill(DT);
return
DT;
}
catch
(Exception ex)
...
{
SetErrorMsg(
"
RunSqlDataTable
"
,SQL,ex.Message );
//
处理错误
return
null
;
}
finally
...
{
//
自动关闭了,不用手动关闭。
da.Dispose();
}
}
#endregion
/**/
///
<summary>
///
运行SQl语句返回第一条记录。返回DataRow
///
</summary>
///
<param name="SQL">
查询语句。比如select * from tableName
</param>
///
<returns></returns>
函数实现 — — RunSqlDataRow
#region
函数实现 — — RunSqlDataRow
public
DataRow RunSqlDataRow(
string
SQL)
...
{
SetCommand(SQL,
1
);
//
设置command
SqlDataAdapter da
=
new
SqlDataAdapter(cm);
try
...
{
DataTable DT
=
new
DataTable();
da.Fill(DT);
if
(DT.Rows.Count
>
0
)
return
DT.Rows[
0
];
else
return
null
;
}
catch
(Exception ex)
...
{
SetErrorMsg(
"
RunSqlDataRow
"
,SQL,ex.Message );
//
处理错误
return
null
;
}
finally
...
{
//
自动关闭了,不用手动关闭。
da.Dispose();
}
}
#endregion
/**/
///
<summary>
///
运行SQl语句返回第一条记录的数组。返回字符串数组
///
</summary>
///
<param name="SQL">
查询语句。比如select top 1 * from tableName
</param>
///
<returns></returns>
函数实现 — — RunSqlStrings
#region
函数实现 — — RunSqlStrings
public
string
[] RunSqlStrings(
string
SQL)
...
{
//
返回ID 传入查询语句,返回第一条记录的第一的字段的值
SetCommand(SQL,
1
);
//
设置command
try
...
{
if
(cm.Connection.State
==
ConnectionState.Broken
||
cm.Connection.State
==
ConnectionState.Closed )
cm.Connection.Open();
SqlDataReader r
=
cm.ExecuteReader(CommandBehavior.SingleRow);
if
(r.Read() )
...
{
int
ArrLength
=
r.FieldCount;
string
[] strValue
=
new
string
[ArrLength];
for
(
int
i
=
0
;i
<
ArrLength;i
++
)
strValue[i]
=
r.GetValue(i).ToString();
return
strValue;
}
else
...
{
r.Close();
return
null
;
}
}
catch
(Exception ex)
...
{
SetErrorMsg(
"
RunSqlStrs
"
,SQL,ex.Message );
//
处理错误
return
null
;
}
finally
...
{
if
(
!
isUseTrans)
cm.Connection.Close();
}
}
#endregion
/**/
///
<summary>
///
运行SQl语句返回每一条记录的第一个字段的数组。返回字符串数组
///
</summary>
///
<param name="SQL">
查询语句。比如select myName from tableName
</param>
///
<param name="SQLForCount">
用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。
</param>
///
<returns></returns>
函数实现 — — RunSqlStringsByRow
#region
函数实现 — — RunSqlStringsByRow
public
string
[] RunSqlStringsByRow(
string
SQL,
string
SQLForCount)
...
{
//
先获取记录数
int
RowCount
=
0
;
if
(JYK.Functions.IsInt(SQLForCount))
...
{
RowCount
=
Int32.Parse(SQLForCount);
}
else
...
{
string
strRowCount
=
RunSqlGetID(SQLForCount);
if
(strRowCount
==
null
)
return
null
;
RowCount
=
Int32.Parse(strRowCount);
}
if
(RowCount
<
1
)
return
null
;
//
返回ID 传入查询语句,返回第一条记录的第一的字段的值
SetCommand(SQL,
1
);
//
设置command
try
...
{
if
(cm.Connection.State
==
ConnectionState.Broken
||
cm.Connection.State
==
ConnectionState.Closed )
cm.Connection.Open();
string
[] strValue
=
new
string
[RowCount];
SqlDataReader r
=
cm.ExecuteReader();
int
i
=
0
;
while
(r.Read())
...
{
strValue[i]
=
r[
0
].ToString();
i
++
;
}
return
strValue;
}
catch
(Exception ex)
...
{
SetErrorMsg(
"
RunSqlStrs
"
,SQL,ex.Message );
//
处理错误
return
null
;
}
finally
...
{
if
(
!
isUseTrans)
cm.Connection.Close();
}
}
#endregion
/**/
///
<summary>
///
运行SQl语句返回第一条记录的第一列的值。
///
</summary>
///
<param name="SQL">
查询语句。比如select top 1 ID from tableName where userName='aa'。会返回ID的内容
</param>
///
<returns></returns>
函数实现 — — RunSqlGetID
#region
函数实现 — — RunSqlGetID
public
string
RunSqlGetID(
string
SQL)
...
{
SetCommand(SQL,
1
);
//
设置command
try
...
{
if
(cm.Connection.State
==
ConnectionState.Broken
||
cm.Connection.State
==
ConnectionState.Closed )
cm.Connection.Open();
SqlDataReader r
=
cm.ExecuteReader(CommandBehavior.SingleRow);
if
(r.Read())
return
r.GetValue(
0
).ToString();
else
return
null
;
}
catch
(Exception ex)
...
{
SetErrorMsg(
"
RunSqlGetID
"
,SQL,ex.Message );
//
处理错误
return
null
;
}
finally
...
{
if
(
!
isUseTrans)
cm.Connection.Close();
}
}
#endregion
#endregion
运行查询语句不返回记录集(无返回记录、检查持否存在指定的记录)
#region
运行查询语句不返回记录集(无返回记录、检查持否存在指定的记录)
/**/
///
<summary>
///
运行SQL查询语句,不返回记录集。用于添加、修改、删除等操作
///
</summary>
///
<param name="SQL">
查询语句。比如insert into tableName 、update tableName...
</param>
///
&l