C#操作数据库简介之SqlClient模式
2017-10-10 20:10
197 查看
在C#中,常用的有三种 访问数据库的模式分别为:SqlClient模式、OleDb模式和Odbc模式。其中SqlClient模式是微软老大哥专门为其产品Sql Server数据库而设计的,所以如果欲使用Sql Server数据库开发应用程序的话,建议使用这种模式,其性能和效率是比其他模式的要高。OleDb模式和Odbc模式可以运用在任何支持该模式的数据 库产品中,如Access数据库、DB2、Sybase和Sql Server 数据库等。下面主要分析SqlClient模式。
如果使用SqlClient模式的话,则需要引入如下命名空间:
如果使用OleDb模式的话,需要使用下面的命名空间:
在SqlClient模式下,其基本连接字符串和连接对象如下:连接字
;server是指数据库所在的机器(服务器),如果使用当前机器(本地机器)的话,可 以使用“.”、“(local)”、“127.0.0.1”或本地机器的名字。如果使用其它机器上的数据库的话,可以使用那台机器的机器名字(确保域和工 作组的正确)或IP地址。database指的数据库的名字。uid和pwd分别代表连接数据库的用户名和密码。定义连接字符串后,就可以建立SqlClient模式下的连接对象了,在SqlClient模式下,应使用SqlConnection。
SqlConnection sConn = new SqlConnection(connString);
假设我们想使用SqlClient模式查询Sql Server中TRecord数据库中GameDetails表中的Date(日期)和Sorce(分数)两列的值,则可以建立如下的命令对象(sConn参见建立的连接sConn:
命令对象常用的有三个方法:ExecuteReader(), ExecuteNonQuery()和ExecuteScalar()。ExecuteReader方法用于返回查询结果的全部数据。 ExecuteNonQuery方法用于返回所影响的行数,一般用于Insert、Update和Delete操作。ExecuteScalar方法返回 结果中的第一行第一列的值。
数据读取器应与命令对象配合使用,下面接着4中的例子来写:
下面给出一个数据库操作的例子。假设在Sql Server2012中有一个数据库TRecord,其存放着一个数据表名为GameDetails,其结构为GameDetails(Date,Sorce),下面使用SqlClient模式连接数据库:
1、引入相关的命名空间
在C#中要操作数据库,一般情况需要引入两个命名空间,在三种连接模式中都要引入下面的命名空间:using System.Data;
如果使用SqlClient模式的话,则需要引入如下命名空间:
System.Data.SqlClient;
如果使用OleDb模式的话,需要使用下面的命名空间:
System.Data.Odbc;
2、定义连接字符串,并建立连接对象
在C#中,如果想连接数据库的话,需要使用Connection连接对象。同样,不同的连接模式下,所使用的连接对象也不同:在SqlClient模式下,其基本连接字符串和连接对象如下:连接字
string connString = "server=.;database=testDB;uid=sa;pwd=123456;"
;server是指数据库所在的机器(服务器),如果使用当前机器(本地机器)的话,可 以使用“.”、“(local)”、“127.0.0.1”或本地机器的名字。如果使用其它机器上的数据库的话,可以使用那台机器的机器名字(确保域和工 作组的正确)或IP地址。database指的数据库的名字。uid和pwd分别代表连接数据库的用户名和密码。定义连接字符串后,就可以建立SqlClient模式下的连接对象了,在SqlClient模式下,应使用SqlConnection。
SqlConnection sConn = new SqlConnection(connString);
3、打开数据库连接
打开数据库使用Open方法,但在试图打开数据连接时会发生错误,因此常采用如下的异常控制方法(这里假设打开SqlClient模式下连接,实际上只不过连接对象的名字不同而已):try{ sConn.Open(); } catch(Exception ex){ MessageBox.Show("发生错误:"+ex.Message); //Console.WriteLine("发生错误:"+ex.Message); //在控制台下使用这种方式 }
4、Command命令对象的应用
Command用于向数据库传输的命令的对象,其构造函数常用两个参数,一个参数是所使用的 命令文本(CommandText),另一个为所使用的连接对象Connection。假设我们想使用SqlClient模式查询Sql Server中TRecord数据库中GameDetails表中的Date(日期)和Sorce(分数)两列的值,则可以建立如下的命令对象(sConn参见建立的连接sConn:
SqlCommand sCmd = new SqlCommand("SELECT Date,Sorce FROM TRecord.dbo.GameDetails",sConn); //亦可使用如下的形式: //SqlCommand sCmd = new SqlCommand(); //sCmd.CommandText = "SELECT Date,Sorce FROM TRecord.dbo.GameDetails"; //sCmd.Connection = sConn;
命令对象常用的有三个方法:ExecuteReader(), ExecuteNonQuery()和ExecuteScalar()。ExecuteReader方法用于返回查询结果的全部数据。 ExecuteNonQuery方法用于返回所影响的行数,一般用于Insert、Update和Delete操作。ExecuteScalar方法返回 结果中的第一行第一列的值。
5、数据读取器DataReader
DataReader用于从返回来的数据区中读取数据。其根据使用的数据连接模式不同也有不同的形式:SqlDataReader对应着SqlClient模式,OleDbDataReader对应着OleDb模式,OdbcDataReader对应着Odbc模式数据读取器应与命令对象配合使用,下面接着4中的例子来写:
SqlDataReader sdr = null; sdr = sCmd.ExecuteReader(); //执行命令对象,并用sdr指向结果集的第一条记录。 while(sdr.Read()){ //每读取一条记录后,指向其下一条记录 textBox2.Text = textBox2.Text + sdr["Date"]+" "; textBox2.Text += sdr["Sorce"]; textBox2.Text += "\r\n"; //换行 } sdr.Close();
下面给出一个数据库操作的例子。假设在Sql Server2012中有一个数据库TRecord,其存放着一个数据表名为GameDetails,其结构为GameDetails(Date,Sorce),下面使用SqlClient模式连接数据库:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; namespace ConnectionDb { public partial class Form1 : Form { string connString ; SqlConnection con1; string sql; SqlCommand sCmd; SqlDataReader sdr; DataSet ds; public Form1() { InitializeComponent(); this.connString = null; this.connString = null; this.sql = null; this.sCmd = null; this.sdr = null; this.ds = < 4000 span class="hljs-keyword">null; } private void button1_Click(object sender, EventArgs e) { connString = "Server = .;Database = TRecord;uid = sa;pwd = 123456;"; con1 = new SqlConnection(connString); try { con1.Open(); textBox2.Text = "链接成功!"; } catch (Exception ex) { textBox2.Text = "链接失败!"; } } private void button2_Click(object sender, EventArgs e) { if (con1 == null) { textBox2.Text = "未连接数据库."; } else { if (sdr != null) { sdr.Close(); } con1.Close(); textBox2.Text = "已断开链接."; } } private void button3_Click(object sender, EventArgs e) { textBox2.Text = ""; if (con1 == null) { MessageBox.Show("未链接数据库!","执行错误"); return; } sql = textBox1.Text; sCmd = new SqlCommand(sql); sCmd.Connection = con1; if (sql.Contains("select")) { sdr = sCmd.ExecuteReader(); while(sdr.Read()){ textBox2.Text = textBox2.Text + sdr["Date"]+" "; textBox2.Text += sdr["Sorce"]; textBox2.Text += "\r\n"; } sdr.Close(); } else { sCmd.ExecuteNonQuery(); textBox2.Text = "已执行操作!"; } } } }
相关文章推荐
- C# 操作数据库简介
- C#操作数据库简介
- C#实现工厂模式简介--实现访问不同的数据库
- jdbc数据库操作(二)单例模式
- C#原生连接数据库并操作数据库的方法
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
- c#操作firebird数据库大全
- 黑马程序员_C# .Net 操作数据库
- C#操作数据库,分页、执行存储过程等 [二] - ADO.NET入门之中
- 单例模式在JDBC数据库连接操作里的应用
- sql server数据库安装时选择的是“windows身份验证模式”在.net中的数据库操作的解决
- 2.C#实验五:ADO.NET数据库操作练习详解
- C#第四次作业:MySQL数据库及C#操作MySQL数据库
- C#下操作Visual Fox数据库
- C#数据库操作通用类
- JDBC 简介 ,SQL 注入 ,JDBC操作数据库
- C#连接SMO及数据库操作(一)
- mysql-数据库操作简介
- 操作 SQL Server Mobile 2005 数据库的常用 C# 代码
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程