中易网

C#谁能帮我解释下这个类

答案:2  悬赏:20  
解决时间 2021-04-20 22:20
本人正在开网友写的新闻发布系统代码,其中有一个数据库助手类,执行的是查询和改数据语句,就是还有许多地方看不懂,希望哪位高手帮我分析一下。
特别是2个方法
ExecuteQuery和 ExecuteNonQuery里面的语句还不是很看了懂。
还有 private SqlConnection conn = null;
private SqlCommand cmd = null;
private SqlDataReader sdr = null;
定义这3个是分别定义类为空吗?还是赋值后为空?
谢谢指教

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace DAL
{
public class SQLHelper
{
private SqlConnection conn = null;
private SqlCommand cmd = null;
private SqlDataReader sdr = null;
public SQLHelper()
{
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
conn = new SqlConnection(connStr);
}
private SqlConnection getconn()
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
return conn;
}

///
/// 该方法执行传入的增删改SQL语句
///

/// 要执行的SQL语句
/// 返回更新的记录数
public int ExecuteNonQuery(string sql)
{
int res;
try
{
cmd = new SqlCommand(sql, getconn());
res = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{

throw ex;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}

}
return res;
}

///
/// 改方法执行传入的SQL查询语句
///

/// SQL查询语句
///
public DataTable ExecuteQuery(string sql)
{
DataTable dt = new DataTable();
cmd = new SqlCommand(sql, getconn());
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
}
}

}
最佳答案
第二个问题:定义并初始化为空

try{}catch(){}finally{} 是异常处理
cmd = new SqlCommand(sql, getconn());定义一个sql执行
res = cmd.ExecuteNonQuery();完成执行并将结果影响的行数赋给res
cmd.ExecuteNonQuery
和函数名字很像 但是并不是同一个 cmd.ExecuteNonQuery 是SqlCommand类里面的
throw ex;弹出一个异常ex
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
如果数据库连接开着 就关闭连接

ExecuteQuery和上面差不错

using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
读取执行sql获得的数据赋值给sdr 执行完后调用Dispose(using在这里起这个作用)
datatable类型 的dt通过load读取sdr的数据到dt中
全部回答

为什么要加i=int32.parse (str);

这段代码.是不是-1不是整数,所以要将它转换为32 位有符号整数.

int32.parse能将字符串转换成32 位有符号整数.

解释:不管您输入的是1,还是-1,还是a。int32.parse都是将其转换为整数的。int32.parse对参数是有要求的。就是参数必须是可转换为整数的。如果参数不能转换为整数,就会报错。(另外,据我了解,-1是整数的。)

为什么我运行如上程序时,输入字符a会报错.

朋友说int32.parse函数要求字符串是可转换为数字的。

说明a不能转换成数字?

那c#里字符串a如何转换成整数?

解释:朋友估计就是我了。朋友说的是对的。您说a转换为数字是多少呢。

而且运行程序之后,byebye显示太快,看不到.

加入代码console.read();就看到了.

为什么呢?console.read();

应该是读取数据啊.为什么加入它就会显示了呢? 解释:加入console.read();,也就是读入一个字符。执行到这一句的时候,程序会停下来等待用户输入,既然停下来了。那就可以看到byebye咯。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
《终极一家》第一集视频在哪下载
想自己背包旅行去湛江,玩3天,急需市内路线
有什么小说是男主很腹黑有装傻的呢,女主和纯
生辰八字算时运
喜韵婚纱婚庆馆地址好找么,我有些事要过去
岁 中年人吃什么钙片好 中年妇女吃什么钙片啊
谁能帮忙取个人名?
教师考研考哪些科目
浙江温州有什么比较好的餐饮业可以加盟。
东门中低档的女鞋女包批发在哪,几点开门,价
邮政送快递送进村吗
目前炒股的人数是多少?投资多少算庄家?
德雅住宿怎么去啊,有知道地址的么
到底是电脑问题还是QQ问题
家装打隔断作业流程图和所用材料
推荐资讯
求助,宝贝耳朵进水了
库尔勒哪里有短期会计培训班
开化汽糕好不好吃?
武汉房产证加名问题
加盟朵语好吗?
男人主动给你钱无论钱少
怎么预防痘痘
麦蒂的回归对火箭会有帮助???
我要朱梓骁的博客?
用跑步机怎样快速减大腿
请问谁有美的饮水机的说明书呀。。型号是。MY
miniso名创优品的蓝牙耳机怎样恢复出厂
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?