C#操作SQL经典文库Word格式文档下载.docx

上传人:b****5 文档编号:18963226 上传时间:2023-01-02 格式:DOCX 页数:18 大小:22.39KB
下载 相关 举报
C#操作SQL经典文库Word格式文档下载.docx_第1页
第1页 / 共18页
C#操作SQL经典文库Word格式文档下载.docx_第2页
第2页 / 共18页
C#操作SQL经典文库Word格式文档下载.docx_第3页
第3页 / 共18页
C#操作SQL经典文库Word格式文档下载.docx_第4页
第4页 / 共18页
C#操作SQL经典文库Word格式文档下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C#操作SQL经典文库Word格式文档下载.docx

《C#操作SQL经典文库Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C#操作SQL经典文库Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。

C#操作SQL经典文库Word格式文档下载.docx

+this.dbPassword.Text+"

"

try

{

m_con=newSqlConnection(ConnectionString);

m_con.Open();

MessageBox.Show("

数据库连接成功!

);

flag=true;

}

catch

数据库连接不成功!

flag=false;

}

returnflag;

}

(一)、c#连接SQL数据库代码:

==只是一个简单的例子

publicDataTableRead()

{

DataTabledt=newDataTable();

//新建表

dt.Columns.Add("

col_1"

//新建表中的列

col_2"

stringConnectionString="

datasource=localhost;

initialcatalog=pubs;

userid=sa;

password=sa"

SqlConnectionConn=newSqlConnection(ConnectionString);

if(Conn.State==ConnectionState.Open)

Conn.Close();

}

Conn.ConnectionString=ConnectionString;

Conn.Open();

try

SqlCommandcmd=newSqlCommand("

Select*fromtab_name"

Conn);

SqlDataReadermyReader=cmd.ExecuteReader();

//执行SQL语句的真正查询了

inta=0;

intb=0;

//用来接收已经查询出来的字段

while(myReader.Read())每次循环查到的一行如果有N行就循环N次而已

DataRowdr=dt.NewRow();

//每循环一次新建一行

dr[0]=myReader.GetInt32(0).ToString();

表示接收第一个字段(string型)

dr[1]=myReader.GetInt32

(1).ToString();

dt.Rows.Add(dr);

//每次循环把dr加进去

myReader.Close();

catch(Exceptionex)

MessageBox.Show(ex.Message.ToString());

returndt;

 

(二)、关于Command对象(SqlCommand有两种方法各有优点)

//只用于查询其实可以用于多记录查询两个SQL语句连起来用myReader.NextResult()即可

(A)SqlCommandcmd=newSqlCommand(SqlText,con);

//这是读数据此要和SqlDataReader连用再和ExecuteReader或ExecuteScalar连用.

new这个是用来读数据的就用DataReader来接

这句等同于下面的三句

(B)

//这个不用于查询用于执行T_SQL增删改等等

SqlCommandcmd=con.CreateCommand();

cmd.CommandTest="

Createtabletab_name(namevarchar(20),passwordvarchar(20))"

cmd.ExecuteNonQuery();

***说明:

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

ExecuteNonQuery为执行T-SQL语句但是不建议查询

如果一个类有多个SQL语句要执行用(B)ExecuteNonQuery三句但是ExecuteNonQuery自动执行最靠近它的那句CommandTest(每次只执行一句)

如果一个类中只有一个SQL语句要执行用(A)即可

***说明:

(A)A与ExecuteReader,ExecuteScalar相匹配

(B)B三句的与ExecuteNonQuery相匹配

(三)、关于数据读取器SqlDataReader对象(其中SqlDataReader是和SqlCommandcmd=newSqlCommand(SqlText,con)它连用的)

如果只想读取和显示数据则只需使用数据读取器SqlDataReader即可但要处理数据然后更新数据库,就需要用数据集DataSet和适配器SqlDataAdaper

SqlDataReaderreader=newSqlDataReader();

(A)实例:

(B):

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

DataTableschema=reader.GetSchemaTable();

用它可以把数据库中查询出的结果集以表的形式得到完整的传给schema表

就可以通过DataTable的Rows属性检索行集,通过DataTable的Columns属性检索列集(Rows属性可用于给表添加新行或者从表中删除行,

Columns属性可用于添加列或者删除现有的列)

实例:

//查询出的结果集以表的形式得到完整的传给schema表

foreach(DataRowrowinschema.Rows)//这时相当于对schema表进行操作了

foreach(DataColumncolinschema.Columns)

{

Console.WriteLine(col.ColumnName+"

="

+row[col]);

Console.WriteLine("

=========="

(C):

reader.NextResult()使用数据读取器处理多个结果集

stringsql_1=@"

select*fromtab_1"

stringsql_2=@"

select*fromtab_2"

//这里一定要有个空格才可以因为当两个SQL语句连接时要用空格分开

stringsql=sql_1+sql_2;

SqlCommandcmd=newSqlCommand(sql,con);

//执行两个或多个SQL语句的联合查询

SqlDataReaderreader=cmd.ExecuteReader();

//这时有多个结果集

do

while(reader.Read())//读取一个结果集的所有内容

{0}:

{1}"

reader[0],reader[1]);

Console.WriteLine("

.PadLeft(60,'

='

));

while(reader.NextResult());

//循环读下个结果集

***补充:

如果想判断当SqlDataReader没有读出结果时要做的处理方法:

首先要走

while(reader.Read())//读取一个结果集的所有内容

Console.WriteLine("

中的reader.Read();

//必须要走这一步

如果想判断当没有读出结果时就必须在While(reader.Read())之后

if(reader.HasRows==false)//判断如果没有读出结果

{

MessageBox.Show("

要查询的结果不存在!

}

这是没有读出结果时如果读出结果了那就直接走while(reader.Read()){}里面了就不走if(){}里面了

其实如果用到了DataTable也可以用if(dt.Rows.count<

0){}也可以的

[SqlDataAdapter]

(四)、SqlDataAdapter

数据集和数据适配器DataSet和SqlDataAdapter

知识点:

SqlDataAdapterda=newSqlDataAdapter();

(1)da.Fill();

(2)da.SelectComand=newSqlCommand(sqlText,con);

(3)DataTabledt=newDataTable();

dt.Select(where条件,升降序);

(4)

填充数据集有两种方法:

使用数据适配器

从XML文档中读取数据

4.1)

da.SelectCommand=newSqlCommand(sqlText,con);

DataSetds=newDataSet();

da.Fill(ds,"

tab_name"

//Fill方法内部使用数据读取器访问表模式和数据,然后使用他们填充数据集

//相当于执行SQL语句后把结果集取出后赋给DataSet中的tab_name表。

4.2)

数据集的筛选和排序:

例子

staticvoidMain(string[]args)

stringConnectionString=@"

initialcatalog=northwind;

userid=sa;

password=sa;

stringsql_1=@"

select*fromcustomers"

stringsql_2=@"

select*fromproductswhereunitprice<

10"

//注意当第二句连接时要有个空格

stringsql=sql_1+sql_2;

//两条SQL语句拼接

SqlConnectioncon=newSqlConnection(ConnectionString);

if(con.State==ConnectionState.Open)

con.Close();

con.Open();

SqlDataAdapterda=newSqlDataAdapter();

//A

da.SelectCommand=newSqlCommand(sql,con);

//B

//其中A和B两句合并相当于:

SqlDataAdapterda=newSqlDataAdapter(sql,con);

这一句

DataSetds=newDataSet();

da.Fill(ds,"

customers"

DataTableCollectiondtc=ds.Tables;

//通过这句把DataSet中的所有表都给了Table表集合

ResultsfrmCustomerstable:

CompanyName"

.PadRight(20)+"

ContactName"

.PadLeft(23)+"

\n"

//以下两句是筛选条件

stringfl="

country='

Germany'

//where条件

stringsrt="

companynameasc"

//降序

//下面是知识点数据集的筛选条件

foreach(DataRowrowindtc["

].Select(fl,srt))//这是用法

//dtc["

]说明:

dtc表集合中的customers表.Select()就是筛选条件

Console.WriteLine("

{0}\t{1}"

row["

].ToString().PadRight(25),row["

]);

\n----------------------------"

ResultsformProductstable:

ProductName"

UnitPrice"

.PadLeft(21)+"

foreach(DataRowrowindtc[1].Rows)

productname"

unitprice"

Console.ReadLine();

catch(Exceptionex)

Error:

+ex);

finally

4.3)

使用DataView其实DataView的功能4.2)数据集都可以实现所以一般不常用

DatView是DataTable内容的动态表示,与SQL视图一样,他不保存数据

下面一句就是把dt表中的记录有赋给了DataViewdv然后对dv进行操作DataView有自己的动态方法

DataViewdv=newDataView(dt,"

"

country"

DataViewRowState.CurrentRows);

例子:

staticvoidMain(string[]args)

datasource=localhost;

initialcatalog=northwind;

stringsqlText=@"

selectcontactname,countryfromcustomers"

SqlDataAdapterda=newSqlDataAdapter(sqlText,con);

//da.SelectCommand=newSqlCommand(sqlText,con);

//填充给DataSet中的Customeres表

DataTabledt=ds.Tables["

];

//下面一句就是把dt表中的记录有赋给了DataViewdv然后对dv进行操作DataView有自己的动态方法

DataViewdv=newDataView(dt,"

//其中第一个参数是DataTale,第二个是对DataTable内容进行筛选的筛选器,第三个是排序,最后一个参数指定要在视图中包含的行的类型

foreach(DataRowViewdrvindv)

for(inti=0;

i<

dv.Table.Columns.Count;

i++)

{

Console.Write(drv[i]+"

\t"

}

Console.WriteLine();

Console.ReadLine();

catch(Exceptionex)

+ex);

4.4)修改数据集中的记录其实这个4.4)单独是没有意义的应该是4.5以后将更新保存到数据库源

说明:

对数据集所做的变化不会自动保存到数据库中,为了把这些变化保存到数据库中,需要再次连接数据库,显示完成更新

staticvoidMain()

stringConnetionString=@"

stringqry=@"

select*fromemployeeswherecountry='

UK'

stringudp=@"

updateemployeessetcity=@citywhereemployeeid=@employeeid"

SqlConnectioncon=newSqlConnection(ConnetionString);

SqlDataAdapterda=newSqlDataAdapter();

da.SelectCommand=newSqlCommand(qry,con);

employees"

//以下更改了表的信息

dt.Columns["

FirstName"

].AllowDBNull=true;

dt.Rows[0]["

city"

]="

Wilmington"

//以下为表添加了新行

DataRownewRow=dt.NewRow();

newRow["

firstname"

li"

lastname"

yong"

titleofcourtesy"

haha"

dalian"

UK"

dt.Rows.Add(newRow);

//可以显示更新后的信息这时只更新了数据集但是没有更新数据库

foreach(DataRowrowindt.Rows)

{0}{1}{2}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1