C#操作数据库

先从数据库中取出结果集后进行处理数据后再UpDate更新到数据库。

如果只想读取和显示数据,只需要使用数据读取SqlDataReader即可,但要处理数据然后更新数据库(增加、更改),局需要数据集DataSet和数据适配器SqlDataAdaper。

SqlDataAdapter的用法:

读取数据用SqlDataReader是固定的,但是处理数据分为两种情况。

一、直接拼SQL语句,适用于简单的表。

二、用参数——用SqlDataAdaper适用于复杂的表。带参数方便进行类型转换。其中删除一条记录不用带参数,直接拼SQl语句,cmd.ExecuteNonQuery()即可。

定义个全局变量 Private SqlConnection m—con =null;然后在方法内部 m-con = new 出来,断开式连接体现在之后使用只要m-cn.Open();j即可打开。

数据库连接方法:

public bool db_check()
{
bool flag = false;
string ConnectionString ="data source ="+ dbServerName.Text+";initial catalog="+dbName.Text+";
user id="+dbUsername.Text+";
password="+this.dbPassword.Text+";";
try
{
m_con = new SqlConnection(ConnectionString);
m_con.Open();
MessageBox.Show("数据库连接成功");
flag = true;
}
catch
{
MessageBox.Show("数据库连接不成功");
flag=false;
}
return flag;
}

一、C#连接SQL数据库代码:

public DataTable Read()
{
DataTable dt = new DataTable();//创建新表
dt.Columns.Add("col_1");//新建表中的列
dt.Columns.Add("col_2");
string ConnectionString = "data source =localhost;initial catalog =pubs;user id =sa;password=sa";
sqlConnection Conn = new SqlConnection(ConnectionString);
if(Conn,State==ConnectionState.Open)
{
Conn.Close();
}
Conn.ConnectionString=ConnectionString;
Conn.Open();
try
{
SqlCommand cmd = new SqlCommand(Select * from tab_name",Conn);
SqlDataReader myReader =cmd.ExecuteReader();//执行SQL语句的真正查询
int a =0;
int b=0;//用来接受已经查询出来的字段
while(myReader.Read())//每次循环查到一行
{
DataRow dr=dt.NewRow();//没循环一次新建一行
dr[0]=myReader.Getint32(0).ToString();//表示接受第一个字段(String型)
dt.Rows.Add(dr);//每循环一次把dr加进去
}
myReader.Close();
conn.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message.ToString();
}
return dt;
}

二、Command对象

1、SqlCommand cmd = new SqlCommand(SqlText,conn);//读取数据,要和SqlDataAdapter连用,再和ExecuteReader或ExecuteScalar连用

2、SqlCommand用法有ExecuteNonQuery、ExecuteReader、ExecuteScalar三种,其中ExecutrReader(所有查询),ExecuteScale(首行首列查询)

ExecuteNonQuery为执行T-SQL语句;如果一个类有多条SQL语句要执行用三句这个(等同于1)

SqlCommand cmd = con,CreateCommand();
cmd.CommandTest="Create table tab_name(name varchar(20),password varchar(20))";
cmd.ExecuteNonQuery();

如果一个类只有一个SQL语句要执行,使用(1),与ExecuteReader、ExecuteScalar相匹配,三句与ExecuteNonQuery相匹配;

三、关于数据读取器 SqlDataReader对象,他是和SqlCommand cmd =new SqlCommand(SqlText,con)它连用的

1、只读取数据:

SqlCommand cmd = new SqlCommand("select * from tab_name",Conn);
SqlDataReader myReader = cmd.ExecuteReader();//执行SQL
while(myReader.Reade())
{
DataRow dr =dt.NewRow();
dr[0]=myReader.Getint32(0).ToString();
dr[1]=myReader.Getint32(1).ToString();
dt.Rows.Ad(dr);
}

2、GetSchemaTable方法,返回一个已经填充的DataTable实例(可以一次读出完整表的内容)

DataTable schema=reader.GetSchemaTable();

foreach(DataRow row in schema.Rows)

{

foreach(DataColumn col in schema.Columns)

{

Console.WriteLine(col.ColumnName+"="+row[col});

}

}

四、数据适配器:SqlDataAdapter

SqlDataAdapter da = new SqlDataAdapter();
da.Fill();
da.SelectComand=new SqlCommand(sqlText,con);
DataTable dt new DataTablae();
dt.Select(where 条件,升降序);

填充数据集有两种方法:
:使用数据适配器
:从XML文档中读取数据
SqlDataAdapter da =new SqlDataAdapter();
da.SelectCommand =new SqlCommand(sqlText,con);
DataSet ds =new DataSet();
da.Fill(ds,"tab_name");//Fill方法内部使用数据读取器访问表模式和数据,然后使用他们填充数据集
数据集的筛选和排序
DataTableCollection dtc =ds.Tables;//通过这句把DataSet中的所有表都给了Table表集合
//以下两句是筛选条件
string fl ="country='Germany'";//where 条件
string srt ="companyname asc"; //降序
foreach(DataRow row in dtc["customers"].Select(fl,srt))//这是用法,dtc表集合中的customers表 .Select() 就是筛选条件



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值