请高手帮我解释一下这些C#代码的意思(连接数据库的代码)
在窗体中拖一个DATAGRIDVIEW控件然后代码如下显示数据库中的表的数据就是不知道它每句的含义和作用、以及它连接数据库的原理请高手帮我解释一下最好每一句都给我注释一下...
在窗体中拖一个DATAGRIDVIEW控件然后代码如下 显示数据库中的表的数据 就是不知道它每句的含义和作用、以及它连接数据库的原理 请高手帮我解释一下 最好每一句都给我注释一下 在一个就是如何通过这里去修改和添加表中的数据 谢谢了
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Collections;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Reflection;
namespace ConnDB1
{
class PublicClass
{
//设置连接数据库的字符串
public string strConn = "server=.;database=Northwind;uid=sa;pwd=;";
public DataRow GetDataRow(string sql)
{
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection(strConn);
SqlDataAdapter da = new SqlDataAdapter(sql, con);
try
{
da.Fill(ds);
if (ds.Tables[0].Rows.Count < 1)
{
return null;
}
return ds.Tables[0].Rows[0];
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
finally
{
con.Close();
con.Dispose();
da.Dispose();
}
}
public bool ExecuteSQL(string sql)
{
SqlConnection con = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand(sql, con);
try
{
con.Open();
cmd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
con.Close();
con.Dispose();
cmd.Dispose();
}
}
public DataSet GetDataSet(string sql)
{
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection(strConn);
SqlDataAdapter da = new SqlDataAdapter(sql, con);
try
{
da.Fill(ds);
}
catch (Exception ex)
{
//throw new Exception(ex.ToString());
}
finally
{
con.Close();
con.Dispose();
da.Dispose();
}
return ds;
}
}
}
private void FrmMian_Load(object sender, EventArgs e)
{
PublicClass database = new PublicClass();
string StrSql;
StrSql = "select * from emp";
DataSet ds = database.GetDataSet(StrSql);//获得查询记录的条数
if (ds.Tables[0].Rows.Count > 0)
{
dataGridView1.DataSource = ds.Tables[0];
}
} 展开
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Collections;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Reflection;
namespace ConnDB1
{
class PublicClass
{
//设置连接数据库的字符串
public string strConn = "server=.;database=Northwind;uid=sa;pwd=;";
public DataRow GetDataRow(string sql)
{
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection(strConn);
SqlDataAdapter da = new SqlDataAdapter(sql, con);
try
{
da.Fill(ds);
if (ds.Tables[0].Rows.Count < 1)
{
return null;
}
return ds.Tables[0].Rows[0];
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
finally
{
con.Close();
con.Dispose();
da.Dispose();
}
}
public bool ExecuteSQL(string sql)
{
SqlConnection con = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand(sql, con);
try
{
con.Open();
cmd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
con.Close();
con.Dispose();
cmd.Dispose();
}
}
public DataSet GetDataSet(string sql)
{
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection(strConn);
SqlDataAdapter da = new SqlDataAdapter(sql, con);
try
{
da.Fill(ds);
}
catch (Exception ex)
{
//throw new Exception(ex.ToString());
}
finally
{
con.Close();
con.Dispose();
da.Dispose();
}
return ds;
}
}
}
private void FrmMian_Load(object sender, EventArgs e)
{
PublicClass database = new PublicClass();
string StrSql;
StrSql = "select * from emp";
DataSet ds = database.GetDataSet(StrSql);//获得查询记录的条数
if (ds.Tables[0].Rows.Count > 0)
{
dataGridView1.DataSource = ds.Tables[0];
}
} 展开
2个回答
展开全部
首先最下面的FrmMain_Load(...)是载入窗体时的初始化
先new一个publicclass()对象
接下来调用此对象的GetDataSet()方法
来看GetDataSet()方法
新建一个DataSet,用来存放从数据库获得的记录,Dataset可以在关闭数据库连接后使用;
Sqldataadapter,从名字上看适配器的意识,类是我们用的笔记本的交流电适配器,充当一个中间角色,读取数据库中的数据进行一些处理,把它可以存入到dataset中,da.fill()方法就是把数据填充到dataset中,后面的是异常处理,然后关闭必要的连接,把得到的dataset数据返回。
上面的getDataRow()方法跟getdataset差不多他只是返回dataset中的第一个表格的第一行数据,dataset中的数据都是以集的形式存在的,可以看成表。
再回到load()函数,判断dataset中第一个结果集的行数是否大于0,也就相当于里面有没有数据,有的话把它显示到datagridview中
中间还有一个ExecuteSQL()方法,新建一个连接,打开,执行Sqlcommand,
用 cmd.ExecuteNonQuery();但是你写的sql命令式select,返回结果的,要用SqlDataReader read=cmd.ExecuteReader();
然后根据sqldatareader就可以读取里面的信息,这跟上面的采用dataset是另一种方法,根据你的需要选择。
至于根据连接字符串连接数据库的原理,这个是驱动程序的工作,我们无法知道,一种技术,微软不会告诉你的。
至于修改更新,一种方法直接使用update或则delete的sql语句,然后执行ExecuteNonQuery()或则相应的方法,还有一种就是用dataset,首先读入一些数据,形成一张“表 ”记录,你可以直接把它看成是二维数组,把要改的数据赋给n行m列的单元格,如set.table[0].rows[n][m]="xxx";赋值完后还要执行sqlDataadApter实例的update()方法,
!!!!注意在做这些之前还要新建一个SqlCommandBuilder类的实例
如SqlCommandBuilder build=new SqlCommandBuilder(adapter)//以SqlDataAdapter的实例作为参数,这样基本的更新删去就搞定了,希望对你有所帮助,我也正在学习当中...
先new一个publicclass()对象
接下来调用此对象的GetDataSet()方法
来看GetDataSet()方法
新建一个DataSet,用来存放从数据库获得的记录,Dataset可以在关闭数据库连接后使用;
Sqldataadapter,从名字上看适配器的意识,类是我们用的笔记本的交流电适配器,充当一个中间角色,读取数据库中的数据进行一些处理,把它可以存入到dataset中,da.fill()方法就是把数据填充到dataset中,后面的是异常处理,然后关闭必要的连接,把得到的dataset数据返回。
上面的getDataRow()方法跟getdataset差不多他只是返回dataset中的第一个表格的第一行数据,dataset中的数据都是以集的形式存在的,可以看成表。
再回到load()函数,判断dataset中第一个结果集的行数是否大于0,也就相当于里面有没有数据,有的话把它显示到datagridview中
中间还有一个ExecuteSQL()方法,新建一个连接,打开,执行Sqlcommand,
用 cmd.ExecuteNonQuery();但是你写的sql命令式select,返回结果的,要用SqlDataReader read=cmd.ExecuteReader();
然后根据sqldatareader就可以读取里面的信息,这跟上面的采用dataset是另一种方法,根据你的需要选择。
至于根据连接字符串连接数据库的原理,这个是驱动程序的工作,我们无法知道,一种技术,微软不会告诉你的。
至于修改更新,一种方法直接使用update或则delete的sql语句,然后执行ExecuteNonQuery()或则相应的方法,还有一种就是用dataset,首先读入一些数据,形成一张“表 ”记录,你可以直接把它看成是二维数组,把要改的数据赋给n行m列的单元格,如set.table[0].rows[n][m]="xxx";赋值完后还要执行sqlDataadApter实例的update()方法,
!!!!注意在做这些之前还要新建一个SqlCommandBuilder类的实例
如SqlCommandBuilder build=new SqlCommandBuilder(adapter)//以SqlDataAdapter的实例作为参数,这样基本的更新删去就搞定了,希望对你有所帮助,我也正在学习当中...
展开全部
class PublicClass
{
//设置连接数据库的字符串
public string strConn = "server=.;database=Northwind;uid=sa;pwd=;";
public DataRow GetDataRow(string sql)
{
DataSet ds = new DataSet();//新建数据集合
SqlConnection con = new SqlConnection(strConn);新建数据库连接
SqlDataAdapter da = new SqlDataAdapter(sql, con);//新建数据适配器并执行sql
try
{
da.Fill(ds);//把适配器中的结果填充到数据集
if (ds.Tables[0].Rows.Count < 1)//判断数据集合中是否有内容 {
return null;//没有内容返回空
}
return ds.Tables[0].Rows[0];//返回第一张表的第一行
}
catch (Exception ex)
{
throw new Exception(ex.ToString());//抛出异常
}
finally//try块执行完后一定会执行的块
{
con.Close();//关闭连接
con.Dispose();//应该是重置的意思?不肯定
da.Dispose();//应该是重置的意思?不肯定
}
}
//执行sql方法
public bool ExecuteSQL(string sql)
{
SqlConnection con = new SqlConnection(strConn);//新建连接
SqlCommand cmd = new SqlCommand(sql, con);//新建执行对象
try
{
con.Open();//打开连接
cmd.ExecuteNonQuery();//执行
return true;//这里返回真,应先判断是否执行成功,cmd.ExecuteNonQuery()返回int型,成功为1,失败为-1
}
catch
{
return false;//异常返回假
}
finally//始终会执行的块,在return之前
{
con.Close();//关闭连接
con.Dispose();//重置?
cmd.Dispose();//重置?
}
}
//得到数据集的方法
public DataSet GetDataSet(string sql)
{
DataSet ds = new DataSet();//新建数据集
SqlConnection con = new SqlConnection(strConn);//新建连接对象
SqlDataAdapter da = new SqlDataAdapter(sql, con);//新建数据适配器并执行
try
{
da.Fill(ds);//填充到数据集
}
catch (Exception ex)
{
//throw new Exception(ex.ToString());
}
finally
{
con.Close();//关闭连接
con.Dispose();//重置
da.Dispose();//重置
}
return ds;//返回数据集
}
}
}
//窗体加载事件
private void FrmMian_Load(object sender, EventArgs e)
{
PublicClass database = new PublicClass();//实例化操作类
string StrSql;
StrSql = "select * from emp";//sql语句
DataSet ds = database.GetDataSet(StrSql);//得到数据集合
if (ds.Tables[0].Rows.Count > 0)//判断数据集合不为空
{
dataGridView1.DataSource = ds.Tables[0];//绑定到datagridview
}
}
{
//设置连接数据库的字符串
public string strConn = "server=.;database=Northwind;uid=sa;pwd=;";
public DataRow GetDataRow(string sql)
{
DataSet ds = new DataSet();//新建数据集合
SqlConnection con = new SqlConnection(strConn);新建数据库连接
SqlDataAdapter da = new SqlDataAdapter(sql, con);//新建数据适配器并执行sql
try
{
da.Fill(ds);//把适配器中的结果填充到数据集
if (ds.Tables[0].Rows.Count < 1)//判断数据集合中是否有内容 {
return null;//没有内容返回空
}
return ds.Tables[0].Rows[0];//返回第一张表的第一行
}
catch (Exception ex)
{
throw new Exception(ex.ToString());//抛出异常
}
finally//try块执行完后一定会执行的块
{
con.Close();//关闭连接
con.Dispose();//应该是重置的意思?不肯定
da.Dispose();//应该是重置的意思?不肯定
}
}
//执行sql方法
public bool ExecuteSQL(string sql)
{
SqlConnection con = new SqlConnection(strConn);//新建连接
SqlCommand cmd = new SqlCommand(sql, con);//新建执行对象
try
{
con.Open();//打开连接
cmd.ExecuteNonQuery();//执行
return true;//这里返回真,应先判断是否执行成功,cmd.ExecuteNonQuery()返回int型,成功为1,失败为-1
}
catch
{
return false;//异常返回假
}
finally//始终会执行的块,在return之前
{
con.Close();//关闭连接
con.Dispose();//重置?
cmd.Dispose();//重置?
}
}
//得到数据集的方法
public DataSet GetDataSet(string sql)
{
DataSet ds = new DataSet();//新建数据集
SqlConnection con = new SqlConnection(strConn);//新建连接对象
SqlDataAdapter da = new SqlDataAdapter(sql, con);//新建数据适配器并执行
try
{
da.Fill(ds);//填充到数据集
}
catch (Exception ex)
{
//throw new Exception(ex.ToString());
}
finally
{
con.Close();//关闭连接
con.Dispose();//重置
da.Dispose();//重置
}
return ds;//返回数据集
}
}
}
//窗体加载事件
private void FrmMian_Load(object sender, EventArgs e)
{
PublicClass database = new PublicClass();//实例化操作类
string StrSql;
StrSql = "select * from emp";//sql语句
DataSet ds = database.GetDataSet(StrSql);//得到数据集合
if (ds.Tables[0].Rows.Count > 0)//判断数据集合不为空
{
dataGridView1.DataSource = ds.Tables[0];//绑定到datagridview
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询