SQL数据库操作中的常用C#语句

时间:2023-06-08 08:06:04 公文范文 来源:网友投稿

摘 要:将常用到的、针对SQL数据库操作的C#语句进行汇集和讨论,便于相关人员参考。基于.Net平台下某软件的开发,测试这些代码的实用性和延伸性。实践证明,给出的代码可以成功地操作SQL数据库。测试表明,代码可结合具体的解决方案进行合理更改并使用。

关键词:SQL数据库;C#语言;数据库操作;代码

中图分类号:TP312 文献标识码:A 文章编号:1672-7800(2011)011-0084-04

1 C#中对SQL Server的一些操作语句

ADO.NET对象模型中有5个主要组件,分别是Connection对象、Command对象、DataAdapter对象、DataSet对象和DataReader对象,主要使用这几个对象进行数据库的操作。

1.1 远程数据库的连接

在C#语言中,有专门的命名空间System.Data.SqlClient给SQL Server的.NET Framework 数据提供程序。声明using System.Data.SqlClient后,对该命名空间下的SqlConnection类,即Connection对象的合理使用,就可以对SQL数据库进行远程连接。部分代码如下:

连接数据库需要的4个参数依次是IP地址(在局域网中可以是电脑名称)、数据库名称、数据库登陆ID(一般是sa即system administrator的缩写)和数据库登陆密码。如果在软件中频繁用到连接,可以用C#单键模式固定和保存4个参数以提高软件效率。如果是固定IP服务器,可以将含有参数的连接语句写入XML引用,使用连接时调用即可。

1.2 数据库的创建

在网上阅卷软件中使用到一个创建数据库的功能,该功能用于软件使用者命名并创建一个表,其中用到了Command对象,具体来说是SqlCommand类。同样要声明命名空间System.Data.SqlClient,只要以后用到SQL相关的组件对象都要声明此命名空间,后文不再累述。部分函数代码如下:

本例中,以函数重载形式设定SqlCommand的两个参数,一个是此例的SQL语句,一个是连接语句,再用SqlCommand实例中的ExevuteNonQuery()方法执行,就可以创建一个数据表。

1.3 数据库的插入、选择、更新和删除

前文提到“create table”,它是SQL中的一种DDL(Data Definition Language)语句,此外还有DML(Data Manipulation Language)和DCL(Data Control Language)语句。而4种基本的DML操作,既INSERT、SELECT、UPDATE和DELETE,分别是插入数据、选择数据(查看)、更新数据和删除数据。需要提出的是,DML不是LINQ to ADO.NET中的技术操作语句,它们有时候可以利用DataAdapter对象和DataSet对象写在一个算法里,比如用DML将数据从数据库中提出,再由LINQ对数据进行筛选,形成高效的业务逻辑层,但他们在语法上和数据对象上是不一样的。下面给出部分代码进行讨论。

1.3.1 INSERT语句 

private void insert(string ChoosedTable)

{

SqlCommand SCD = new SqlCommand("insert into [" + ChoosedTable + "](学号) values(0)", sqlConnection); //创建实例,并确定SQL操作语句

SCD.ExecuteNonQuery();//执行SCD实例中的SQL操作

}

在连接数据库并打开连接后,可用上面给出的语句对指定的表插入值,其中sqlConnection是连接方法,参看前文给出的代码。SQL语句指的是向由控件选择的ChoosedTable表中的学号列插入0这个值,然后由ExecuteNonQuery()执行。

1.3.2 SELECT的语句

private void select(string ChoosedTable)

{

DataTable dataTable = new DataTable();//创建DataTable的实例

SqlDataAdapter dataAdapter = new SqlDataAdapter();//创建SqlDataAdapter的实例

SqlCommand SCD1 = new SqlCommand("select * from [" + ChoosedTable + "]", sqlConnection); //创建实例,并确定SQL操作语句

dataAdapter.SelectCommand = SCD1; //执行SQL,将表的内容写入dataAdapter

dataAdapter.Fill(dataTable); //数据不做改变向dataTable中填充

this.dataGridView1.DataSource = dataTable; //数据绑定

}

连接数据库后可用以上代码选择特定的表,即ChoosedTable,并将表中的数据在控件dataGridView1中显示出来。SQL语句中的"*"表示表中全部内容,也可以用列名提取某列。显示数据原理主要用到了DataTable对象、SqlDataAdapter.Fill()方法以及数据绑定。

1.3.3 UPDATE的代码

private void update(string userKey, string LoginHelper)

{

SqlCommand SCD = new SqlCommand("update Users set 改卷教师密码 =[" + userKey + "] where 改卷教师姓名= [" + LoginHelper + " ]", sqlConnection); //创建实例,并确定SQL操作语句

SCD.ExecuteNonQuery();

}

SQL的语句指的是,在Users表中,在列名为改卷教师姓名的LoginHelper这一行处,更新列名为改卷教师密码的那一行的值为userKey。这句话可用于当用户忘记密码时,确定的值是某一改卷教师姓名,可由更高权限的管理者对其密码进行更新,userKey即是更新的密码。

1.3.4 DELETE的代码

private void delete(string TextTable, int GID)

{

SqlCommand SCD = new SqlCommand("delete from [" + TextTable + "] where ID=[" + GID + "]", sqlConnection); //创建实例,并确定SQL操作语句

SCD.ExecuteNonQuery(); 

}

SQL语句指的是删除名字为TextTable的表中,列名为ID、行值为GID的那一行。

2 控件dataGridView的更新与条件查询

2.1 dataGridView的更新

控件dataGridView是数据库操作中经常用到的控件,可以实现数据的显示和批量更新。显示在1.3.2 SELECT的语句中已经说明。该功能实现主要用到SqlDataAdapter类中Update()方法,它可与SqlCommandBuilder类合用,来为指定的DataTable中每个已插入、已更新或已删除的行调用相应的INSERT、UPDATE或DELETE语句。下面的代码是批量更新的代码。

private void buttonSave_Click(object sender, EventArgs e)

{

this.dataGridView1.EndEdit();//停止编辑

DataTable dataTable = new DataTable();//创建DataTable的实例

SqlDataAdapter dataAdapter = new SqlDataAdapter();//创建SqlDataAdapter的实例

this.dataGridView1.DataSource = dataTable; //数据绑定

SqlCommandBuilder SCB = new SqlCommandBuilder(dataAdapter); //创建SqlCommandBuilder的实例

dataAdapter.Update(dataTable); //上传

}

这段代码要在1.3.2 SELECT语句使用之后再使用,因为select语句选择了数据库中的表,并绑定了数据源,否则从逻辑上无法确定dataGridView控件中的数据更改是对数据库的哪一个表进行的更改。

SqlCommadBuilder类在构造时自动生成单表命令,用于将对DataSet所作的更改与关联的SQL Server数据库的更改相协调。本文给出的代码是以DataTable为例,DataTable与DataSet既有联系又有区别,DataSet中可以包含多个DataTable,并编辑DataTable之间的关系。 

其他控件的数据绑定也可以参照此控件的绑定。

2.2 条件查询语句

在用dataGridView控件查看和更新数据后,有可能会用到查询语句。它实际上是SELECT语句的类型,设定了条件然后在控件上显示,代码如下:

private void buttonQuery_Click(object sender, EventArgs e)

{

DataTable dataTable = new DataTable();

SqlDataAdapter dataAdapter = new SqlDataAdapter();

using (SqlCommand SCD = new SqlCommand("select * from [" + ChoosedTable + "] where " + choosedColumn + " " + logic + " " + parameter + "", sqlConnection)) //使用using()便于执行完之后断开连接和释放内存

{

dataAdapter.SelectCommand = SCD;

dataAdapter.Fill(dataTable);

this.dataGridView1.DataSource = dataTable;

}

}

SQL语句中,where后的参数依次是要查询的列、逻辑关系符号(大于等于、大于、等于、小于和小于等于)、逻辑关系条件参数。比如要查询微积分分数大于90的是哪些人,那么choosedColumn变量传递的是列名“微积分”、logic是符号“>”、parameter是分数“90”,即可在控件中显示结果。此外,使用using()语句在C#中是比较标准规范的语句,在此使用有在using过程结束后断开连接释放内存等作用。其他说明在上文已提过,在此不赘述。

3 存储过程

存储过程是一组具有特定逻辑功能的SQL语句集合,是数据库设计的一个很重要的对象,适当地使用存储过程优点有很多,可以精简代码,提高数据安全性等。

下面是将pictureBox控件中的图片更新到特定数据表中的代码。图片数据已做二进制流处理。

private void select(string ChoosedTable) 

{

string sql = "update [" + theteacherName + "] SET ImgField=@Photo where ID = "" + GID + "" "; //SQL语句。

SqlCommand dbCmd = new SqlCommand(sql, sqlConnection); //实例SqlCommand,sqlConnection是赋值好的连接语句

dbCmd.CommandType = CommandType.Text; //设定类型

SqlParameter parameter = new SqlParameter("@Photo", SqlDbType.Image, int.MaxValue); //设定存储参数以及相关类型和长度,是一种SqlParameter的重载形式

parameter.Value = ImageData; //ImageDate是已处理过的图片二进制流,这里省略处理代码

dbCmd.Parameters.Add(parameter); //添加参数命令

dbCmd.ExecuteNonQuery();//执行存储添加命令

}

这是一个简单的存储过程,在"//"后已经将语句进行了必要的说明。@Parameter是过程中的参数,使用该符号作为第一个字符来确定指定参数的名称。SQL语句表

示将theteacherName所传递过来的参数作为需要更新的表名,更新在该表行数为GID参数(该参数在ID这一列)所确定的ImgField列处的值。如图1所示。

参考文献:

[1] 梁立新.项目实践精解:C#核心技术应用开发[M].北京:电子工业出版社,2009.

[2] 孙继磊,刘亮亮.精通Visual C# 2008-语言基础、数据库系统开发、Web开发[M]. 北京:人民邮电出版社,2009.

[3] 张跃廷,王小科,张宏宇.C#程序开发范例宝典[M].北京:人民邮电出版社,2007.

[4] 赵会东,王小科,王军.C#开发之道[M].北京:电子工业出版社,2011.

[5] 王秀英.SQL Server2005实用教程[M].北京:清华大学出版社,2010.

[6] 赵会东,王小科,王军.C#开发之道[M].北京:电子工业出版社,2011.

(责任编辑:周晓辉)

Elementary Discussion on C# Language Used in Manipulation of SQL Server Database



Abstract:Thanks to the classes and methods in the SqlClinet Namespace of C# language, programmers can use them into the technology of database implementation. The C# sentences which currently used in manipulation of SQL Server database are collected and discussed in this thesis for ease of reference. Based on implementation of a software on the .Net platform, the given codes were tested for practical applicability and extensibility. It has been found that these given codes can manipulate SQL Server database successfully. The test revealed that these codes can combine with specific solution for reasonably modifying then using.

Key Words: SQL Server Database; C# Language; Manipulation of Database; Code

推荐访问:语句 常用 操作 数据库 sql