C# 连接数据库

一、SQL SERVER 连接字符串语法:

1、SQL SERVER验证(两种写法)(安全连接)

string connStr = "Data Source=.;Initial Catalog=DatabaseName;User Id=sa;Password=123";
或
string connStr = "server=.;database=DatabaseName;uid=sa;pwd=123";

即:Data Source <=> server

       Initial Catalog <=> database

       User Id <=> uid

       Password <=> pwd

2、windows验证(可信连接)

string connStr = "Data Source=.;Initial Catalog=DatabaseName;Integrated Security=SSPI";
或
string connStr = "Data Source=.;Initial Catalog=DatabaseName;Integrated Security=True";
或
string connStr = "Data Source=.;Initial Catalog=DatabaseName;Trusted_Connection=True";

注:如果服务器是本地,可以用 local 或 .(一个点) 表示,如果是远程服务器,则用 IP,端口 表示。

       连接字符串中的键值对不区分大小写。

 二、配置文件中存储方式

可以把连接字符串保存到配置文件中(App.config)

1、配置到<connectionStrings>节点中(推荐):

<add name="connStr" connectionString="server=.;database=test;uid=sa;pwd=123;" providerName="System.Data.SqlClient"/>

2、也可以配置到<appSettings>节点:

<add key="connStr" value="server=.;database=test;uid=sa;pwd=123;"/>

读取配置文件中的连接字符串

1、首先,在项目下的“引用”中,点击右键——添加引用,添加:System.Configuration。

2、在程序最上面,添加:using System.Configuration;

3、读取连接字符串:

conn.ConnectionString = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;//<ConnectionStrings>节点中读取方法
conn.ConnectionString = ConfigurationManager.AppSettings["connStr"].ToString();//<AppSettings>节点中读取方法

 连接对象的创建

string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
//创建连接对象的第一种方式(推荐)
SqlConnection conn = new SqlConnection(connStr);
//创建连接对象的第二种方式
SqlConnection conn = new SqlConnection();
conn.ConnectionString = connStr;

使用using来释放对象

//SqlConnection继承于IDisposeable接口,可以使用using 来释放对象
SqlConnection conn = null;
using (conn = new SqlConnection(connStr))
{
  //代码
}
Console.WriteLine(conn.State);//Closed

 加密/解密配置文件:

Configuration config = ConfigurationManager.OpenExeConfiguration("ConsoleApp10.exe"); //ConsoleApp10.exe为应用程序名称
ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;
 if (section.SectionInformation.IsProtected)
{
      // Remove encryption.
      section.SectionInformation.UnprotectSection();
 }
 else
{
     // Encrypt the section.
      section.SectionInformation.ProtectSection(
                    "DataProtectionConfigurationProvider");
}
 // Save the current configuration.
config.Save();

 

 

三、运行时间测定(Stopwatch)

 Stopwatch sw = new Stopwatch();
 sw.Start();
 //测试代码
sw.Stop();
Console.WriteLine($"运行时间:{sw.ElapsedMilliseconds}ms");

 四、SqlCommand 

Sq1Command介绍

重要属性:

Connection:SqlCommand对象使用的SqlConnection

CommandText:获取或设置要执行的T-SQL语句或存储过程名

CommandType:CommandType.Text--执行的是一个Sql语向

CommandType.StoredProcedure--执行的是一个存储过程

Parameters:SqlCommand对象的命令参数集合 默认空集合

Transaction:获取或设置要在其中执行的事务

创建(推荐使用第三种):

//1.
SqlCommand cmd=newSqlCormand();
cmd.Connection=conn;
cmd.CommandText=sql;
//cmd.ConmandType=CommandTypeText;没有必要的
//cmd.ConmandType=CommandTypeStoredProcedure;//如果是存储过程,必须设置

//2. SqlCommandcmd1=new SqlCommand(sql); cmd1Connection=conn;
//3.sql语句 连接对象 推荐的 SqlCommand cmd2=newSqlConmand(sql,conn); //4.Connection对象 SqlCommandcmd3=connCreateConmand); cmd3ConmandText=sql; //5.事务 string delSql="deletefrom UserInfos whereUserId>3"; //SqlCommand cmd4=newSqlCommand(delSql,conn,null);

 五、SqlParameter

常用属性

DbType 参数的SqlDbType(数据类型数据库的类型而言)

Direction参数的类型:输入输出输入输出、返回值参数

ParameterName 参数的名称

Size 最大大小 字节为单位

Value参数的值

SqlValue作为SQL类型的参数的值

构造方法

1.参数

SqlParameter pral=new SqlParameter();

pral.ParameterName="@userName";//参数名

pra1.Sq1DbType=Sq1DbType.VarChar//数据类型

pra1.Value ="admin”;//参数值

pral.Size =20;//大小


2.参数名,值

SqlParameter para2=new SqlParameter("@Age",24);


3.参数名 SqlDbType

SqlParameter para3=new SqlParameter("@DeptId",SqlDbType.Int);

para3.Size =4;

para3.Value=3;

 

4.参数名 类型 大小

SqlParameter para4 =new SqlParameter("@UserPwd",SqlDbType.VarChar. 50);

para4.Value="123456”


5参数名称 类型 大小 源列名(对应DataTable中的列名)

SqlParameter para5 =new SqlParameter(“@UserName”,SqlDbType.VarChar,20.
"UName”);
SqlConmand cmd=new SqlConmand();

SqlDataReader介绍

定义:提供一种从SQLServer数据库中读取只进的行流的方式。

特点 快速的、轻量级,只读的,谝历访问每一行数据的数据流,向一个方向,一行一行的,不能
向后读取,不能修改数据。

缺点:不灵活,只适合数据小的情况,读取数据,一直占用连接

读取方式:Read()获取第一行的数据,再次调用Read()方法,
当调用Read()方法返回False时,就表示不再有数据行。


注意:

连接对象一直保持Open状态,如果连接关闭,是不能读取数据的。使用完成过后,应该马上调
用close()关闭,不然Reader对象会一直占用连接的。

创建方式:是不能直接构造的,cmd.ExecuteReader()来创建。cmd.ExecuteReader
(CommandBehaviour.CloseConnection)---好处:关团reader对象时,就会自动关闭连接。

读取时尽量使用与数据库字段类型相匹配的方法来取得对应的值,会减少因类型不一致而增加
类型转换操作性能损耗。

没有读取到末尾就要关闭reader对象时,先调用cmdCancel(),然后再调用reader.Close().
cmd.ExecuteReader()获取存储过程的返回值或输出参数,先调用readerClose(),然后才能
获取参数的值。

常用属性:

Conection:获取与Reader对象相关的SqlConnection

FiedCount:当前行中的列数。

HasRows:reader是否包含一行还是多行。

IsClosedreader对象是否已关闭 true / false

Item[int]:列序号,给定列序号的情况,获取指定列的值dr[1] object

Item[String]列名,获取指定列的值

 

 

posted @ 2023-04-09 17:48  竹楼风雨声  阅读(173)  评论(0编辑  收藏  举报