C#操作SQL经典文库Word格式文档下载.docx
- 文档编号:18963226
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:18
- 大小:22.39KB
C#操作SQL经典文库Word格式文档下载.docx
《C#操作SQL经典文库Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C#操作SQL经典文库Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
+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}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 操作 SQL 经典 文库