ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤:
第一,使用SqlConnection对象连接数据库;
第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调用;
第三,对SQL或存储过程执行后返回的“结果”进行操作。
对返回“结果”的操作可以分为两类:
一是用SqlDataReader直接一行一行的读取数据集;
二是DataSet联合SqlDataAdapter来操作数据库。
两者比较:
SqlDataReader时刻与远程数据库服务器保持连接,将远程的数据通过“流”的形式单向传输给客户端,它是“只读”的。由于是直接访问数据库,所以效率较高,但使用起来不方便。
DataSet一次性从数据源获取数据到本地,并在本地建立一个微型数据库(包含表、行、列、规则、表之间的关系等),期间可以断开与服务器的连接,使用SqlDataAdapter对象操作“本地微型数据库”,结束后通过SqlDataAdapter一次性更新到远程数据库服务器。这种方式使用起来更方,便简单。但性能较第一种稍微差一点。(在一般的情况下两者的性能可以忽略不计。)
一.通过ConfigurationManager.ConnectionStrings获取存储在webconfig中数据库的配置信息,进行数据库链接
需要引用using System.Web.Configuration命名空间
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public static void SQLConn()
{
//获取数据库链接信息
String connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
//链接数据库
SqlConnection conn = new SqlConnection(connStr);
//打开数据库链接
Conn.Open();
SqlCommand cmd = new SqlCommand("select * from stocklog", Conn);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
通过string connStr=ConfigurationManager.ConnectionString[“connStr”].ConnectionString;获得数据库连接的一些配置信息,即“数据源”、“数据库名”、“用户名”、“密码”,将这些信息都保存在connStr中。
webconfig中配置如下:
<configuration>
<connectionStrings>
<add name="connStr" connectionString="Server=.;DataBase=;Uid=;Pwd=">
</connectionStrings>
</configuration>
二.利用Connection类对象链接数据库
Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。
SqlConnection类的对象连接SQL Server数据库;OracleConnection 类的对象连接Oracle数据库;OleDbConnection类的对象连接支持OLEDB的数据库,如Access;而OdbcConnection类的对象连接任何支持ODBC的数据库。与数据库的所有通讯最终都是通过Connection对象来完成的。
SqlConnection conn = new SqlConnection("Server=.;DataBase=;Uid=;Pwd=");
conn.Open();
注意:使用不同的Connection对象需要导入不同的命名空间。OleDbConnection的命名空间为System.Data.OleDb。SqlConnection的命名空间为System.Data.SqlClient。OdbcConnection的命名空间为System.Data.Odbc。OracleConnection的命名空间为System.Data.OracleClinet。
1、集成的Windows身份验证语法范例
string constr = "server=.;database=myschool;integrated security=SSPI";
说明:程序代码中,设置了一个针对Sql
Server数据库的连接字符串。其中server表示运行Sql
Server的计算机名,由于程序和数据库系统是位于同一台计算机的,所以我们可以用.(或localhost)取代当前的计算机名。database表示所使用的数据库名(myschool)。由于我们希望采用集成的Windows验证方式,所以设置
integrated security为SSPI即可。
2、Sql Server 2005中的Windows身份验证模式如下:
string constr = "server=.;database=myschool;uid=sa;pwd=sa";
说明:程序代码中,采用了使用已知的用户名和密码验证进行数据库的登录。数据库连接字符串是不区分大小写的。uid为指定的数据库用户名,pwd为指定的用户口令。为了安全起见,一般不要在代码中包括用户名和口令,你可以采用前面的集成的Windows验证方式或者对Web.Config文件中的连接字符串加密的方式提高程序的安全性。
3、Sql Server 2005中的Sql Server身份验证模式如下:
string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa";
说明:程序代码中data source 表示运行数据库对应的计算机名,initial catalog表示所使用的数据库名。uid为指定的数据库用户名,pwd为指定的用户口令。
SqlCommand对象(负责执行sql语句或存储过程的调用)
命名空间:System.Data.SqlClient.SqlCommand;
SqlCommand对象用于执行数据库操作,操作方式有三种:
SQL语句:command.CommandType = CommandType.Text;
存储过程:command.CommandType = CommandType.StoredProcedure;
整张表:command.CommandType = CommandType.TableDirect;
实例化一个SqlCommand对象
SqlCommand command = new SqlCommand();
command.Connection = sqlCnt; // 绑定SqlConnection对象
或直接从SqlConnection创建
SqlCommand command = sqlCnt.CreateCommand();
常用方法:
command.ExecuteNonQuery(): 返回受影响函数,如增、删、改操作;
command.ExecuteScalar():执行查询,返回首行首列的结果;
command.ExecuteReader():返回一个数据流(SqlDataReader对象)。
常用操作
① 执行SQL
SqlCommand cmd = conn.CreateCommand(); //创建SqlCommand对象
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * from products = @ID"; //sql语句
cmd.Parameters.Add("@ID", SqlDbType.Int);
cmd.Parameters["@ID"].Value = 1; //给参数sql语句的参数赋值
② 调用存储过程
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "存储过程名";
③ 整张表
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = System.Data.CommandType.TableDirect;
cmd.CommandText = "表名"
作者:刈七七
链接:https://www.jianshu.com/p/e94cf7df82b6