SQLServer数据访问
两大类数据访问方式: 1.轻量级:SqlConnection,SqlCommand,SqlDataReader 2.重量级:SqlConnection,SqlDataAdapter,DataTable 五大对象: 链接对象,命令对象,读取器对象,适配器对象,数据集(数据表) 对象介绍: 一、命名空间: 操作SQLServer数据库,一
两大类数据访问方式:
1.轻量级:SqlConnection,SqlCommand,SqlDataReader
2.重量级:SqlConnection,SqlDataAdapter,DataTable
五大对象:
链接对象,命令对象,读取器对象,适配器对象,数据集(数据表)
对象介绍:
一、命名空间:
操作SQLServer数据库,一般用两个命名空间:
using System.Data;
using System.Data.SqlClient;
二、连接对象(SqlServer):SqlConnection
(一)构造:
SqlConnection()
SqlConnection(连接字符串)
连接字符串:不止一种写法。
第一种:手写 "server=.;database=mydb;uid=sa;pwd=sa";
第二种:使用服务器资源管理器,通过添加链接用可视化界面生成链接对象,通过查看属性来获得连接字符串。
(二)属性:
ConnectionString:字符串,设置或获取链接对象的连接字符串。
State:ConnectionState枚举类型,返回当前连接状态。
(三)方法:
Open():void,打开连接
Close():void,关闭连接
CreateCommand():SqlCommand,创建命令对象。(好处是,不用对命令对象单独设置Connection属性)
(四)重要代码:
SqlConnection conn = new SqlConnection("server=.;database=mydb;uid=sa;pwd=sa");
try
{
conn.Open();
....
}
finally
{
conn.Close();
}
二、命令对象(SqlServer):SqlCommand
(一)构造:
SqlCommand()
SqlCommand(SqlConnection,SqlString)
conn.CreateCommand()
(二)属性:
CommandText:string,要执行的SQL命令——SQL语句,存储过程名。
CommandType:CommandType枚举类型,CommandType.Text-SQL-语句;CommandType.StoredProcedure-存储过程
Connection:SqlConnection对象。执行命令时,所使用连接对象。
Parameters:SqlParameterCollection,当CommandText中使用SqlServer局问变量时,需要通过该属性来对变量赋值。
(三)方法:
ExecuteNonQuery():int,执行SQL命令,返回影响的行数。一般用来执行增、删、改
ExecuteReader():SqlDataReader,执行SQL命令,返回数据读取器。一般用来执行查询
ExecuteScalar():object,执行SQL命令,返回首行首列,一般用来执行统计(count(),sum(),avg(),max(),min())查询的。
(四)重要代码:
SqlConnection conn = new SqlConnection("server=.;database=mydb;uid=sa;pwd=sa");
//SqlCommand cmd = new SqlCommand();
//cmd.Connection = conn;
SqlCommand cmd = conn.CreateCommand(); //创建命令对象
//设置命令的类型
cmd.CommandType = CommandType.Text; //cmd.CommandType = CommandType.StoredProcedure;
//指定SQL命令
cmd.CommandText = "insert into nation values(@code,@name);
//添加命令参数
cmd.Parameters.AddWithValue("@code","n005");
cmd.Parameters.AddWithValue("@name","壮族");
//SqlParameter paramCode = new SqlParameter("@code","n005");
//cmd.Parameters.Add(paramCode);
//SqlParameter paramName = new SqlParameter("@name","壮族");
//cmd.Parameters.Add(paramName);
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
finally
{
conn.Close();
}
注意事情:
1.要会调用存储过程(举例)
2.登录:使用统计查询,使用ExecuteScalar()来判断是否登录成功?
3.SQL注入攻击,原理分析及对策(单引号替换,使用SQL局部变量)。
4.查询,增删改,统计查询各举一例。
三、读取器对象(SqlServer):SqlDataReader
只读,只向前的数据读取对象。
它不是结果集,它内存中只占一条数据的空间。每次读取下一条时,会把内存中当前条的内容给冲掉。
(一)构造:
不能直接new出来,构造函数是非public的。
只有唯一的生成方式:cmd.ExecuteReader([CommandBehavior.CloseConnection]);
(二)属性:
HasRows:bool,读取器中是否查出来数据
(三)方法:
Read():读取下一条数据到内存中来。
Close():关闭读取器。一般不会关闭链接,但如果读取器生成的时候Command对象的ExecuteReader()方法中带有CommandBehavior枚举型参数的话,可能把连接也给关掉。
(四)重要代码:
注意事情:
1.登录判断。
查询返回SqlDataReader,使用HasRows属性来判断是否查出记录来,登录是否成功。
SqlDataReader dr = cmd.ExecuteReader();
if(dr.HasRows)
{
}
2.查询多行数据出来,演示多行显示
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
Console.WriteLine(dr["列名"].ToString()+(bool)dr[1]); //dr[常用的两种方式];dr[0],dr["列名"]返回的都是object
}
四、DataTable/DataSet
DataSet相当于内存中的数据库,其中包括多个DataTable。
DataTable相当于内存中的数据表。其中包括两个最重要的属性:Rows(DataRowCollection),Columns(DataColumnCollection)。分表代表表的行集合和列集合。
(一)手动造DataTable
//造表
DataTable table = new DataTable();
//造列
DataColumn col1 = new DataColumn("列名","类型","长度");
DataColumn col2 = new DataColumn("列名","类型","长度");
DataColumn col3 = new DataColumn("列名","类型","长度");
table.Columns.Add(col1);
table.Columns.Add(col2);
table.Columns.Add(col3);
//造行
DataRow row1 = table.NewRow(); //用表对象来生成行结象
row1[0] = "";
row1["列名"] = "";
row1[2] = "";
table.Rows.Add(row1);
DataRow row2 = table.NewRow(); //用表对象来生成行结象
row2[0] = "";
row2["列名"] = "";
row2[2] = "";
table.Rows.Add(row2);
DataRow row3 = table.NewRow(); //用表对象来生成行结象
row3[0] = "";
row3["列名"] = "";
row3[2] = "";
table.Rows.Add(row3);
//假设表中已经查出数据来了,我要取某个数据,怎么取法?
例如:假设查出一个数据表table的数据来。
1.我要操作第3行第5列的数据。(假设我从1开始数的列号和行号)
string s = table.Rows[2][4].ToString(); //取值
table.Rows[2][4] = "hello world";//赋值
2.我要操作所有的数据
for(int i=0;i
for(int j=0;j
Console.Write(table.Rows[i][j].ToString());
}
}
3.控件绑定:
xxx.DataSource = table;
(二)使用可视化界面造
抓图说明。
五、数据适配器对象:SqlDataAdapter
适本器对象中包含四大SqlCommand属性:
SelectCommand
InsertCommand
DeleteCommand
UpdateCommand
两大方法:
Fill(DataTable/DataSet)
Update(DataTable/DataSet)
(一)手写代码操作(简单了解)
(二)可视化界面操作。(抓图显示)
***事务及异常处理,大部份开发人员都会疏忽这两个内容。
什么是事务?举例说明。
事务的四大特性:(A——原子性,C——一致性,I——隔离性,D——持久性)
两大类事务:
一、连接内事务
连接打开,在关闭之前,对数据库操作时所加的事务。
SqlTransaction对象
using System.Transaction;
1.事务对象的创建:
conn.Open();
SqlTransaction trans = conn.BeginTransaction();
2.把事务挂到命令对象上去
cmd.Transaction = trans;
3.执行命令对象.
cmd.CommandText="";
cmd.ExecuteNoneQuery();
.....
4.提交事务
trans.Commit();
5.回滚事务:放在catch里面
trans.Rollback();
加代码,举例,抓图说明。成功,不成功
二、分布式事务
在连接打开关闭之外设置事务。可以控制所有操作。
1.启用DTC服务
2.导入System.Transaction引入。
3.使用using System.Transaction导入命名空间
4.编写事务代码。
TransactionScope类
using(TransactionScope ts = new TransactionScope())
{
数据库操作。
ts.Complete();
}
加代码,举例,抓图说明。成功,不成功
异常处理:try...[catch...][finally..]
一、捕获异常
不加try..catch...一旦程序执出错,程序会立马终止。如果加上try...catch...,代表程序中已经把异常给处理了,程序只是终止try部份的运行,转入catch,整个程序不终止运行。
1、try部份:执行的部份,一旦出错就会终止try部份的执行,走catch。程序不会终止。
2、catch部份:异常处理,一旦出错就会走catch,在catch部份进行处理(写日志,界面显示,异常的包装替换)
如果catch(Exception ex)。常用ex.Message获取错误信息。
一个try可以跟多个catch,每个catch获得不同类型的异常对象。
3、finally部份:最终收尾部份,不管程序执行是否出错,总会执行finally,即使在try部份遇到return,break等关键词时,仍然会执行finally
二、抛出异常
(一)造异常对象:
Exception ex = new Exception("异常的错误信息");
throw ex;
(二)派生自己的异常:(少)
class MyException:Exception
{
}
其它数据访
(一)构造:
(二)属性:
(三)方法:
(四)重要代码:

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











가져오기 단계는 다음과 같습니다. MDF 파일을 SQL Server의 데이터 디렉터리(일반적으로 C:\Program Files\Microsoft SQL Server\MSSQL\DATA)에 복사합니다. SSMS(SQL Server Management Studio)에서 데이터베이스를 열고 연결을 선택합니다. 추가 버튼을 클릭하고 MDF 파일을 선택합니다. 데이터베이스 이름을 확인하고 확인 버튼을 클릭합니다.

SQL Server 데이터베이스에 이미 존재하는 동일한 이름을 가진 개체의 경우 다음 단계를 수행해야 합니다. 개체 유형(테이블, 뷰, 저장 프로시저)을 확인합니다. IF NOT EXISTS를 사용하면 객체가 비어 있는 경우 생성을 건너뛸 수 있습니다. 개체에 데이터가 있는 경우 다른 이름을 사용하거나 구조를 수정하세요. 기존 개체를 삭제하려면 DROP을 사용하세요. 주의하세요. 백업을 권장합니다. 삭제되거나 이름이 바뀐 개체에 대한 참조가 없는지 확인하려면 스키마 변경 사항을 확인하세요.

SQL Server 서비스가 시작되지 않는 경우 해결해야 할 몇 가지 단계는 다음과 같습니다. 오류 로그를 확인하여 근본 원인을 확인합니다. 서비스 계정에 서비스를 시작할 수 있는 권한이 있는지 확인하세요. 종속성 서비스가 실행 중인지 확인하세요. 바이러스 백신 소프트웨어를 비활성화합니다. SQL Server 설치를 복구합니다. 복구가 작동하지 않으면 SQL Server를 다시 설치하십시오.

SQL Server 포트 번호를 보려면 SSMS를 열고 서버에 연결합니다. 개체 탐색기에서 서버 이름을 찾아 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 연결 탭에서 TCP 포트 필드를 확인하세요.

실수로 SQL Server 데이터베이스를 삭제한 경우 다음 단계를 수행하여 복구할 수 있습니다. 데이터베이스 활동 중지, 데이터베이스 로그 확인, 백업에서 복원, DBCC CHECKDB 사용 파티 도구. 데이터 손실을 방지하려면 데이터베이스를 정기적으로 백업하고 트랜잭션 로깅을 활성화하십시오.

SQL Server 데이터베이스 파일은 일반적으로 다음 기본 위치에 저장됩니다. Windows: C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data 데이터베이스 파일 경로를 수정하여 데이터베이스 파일 위치를 사용자 정의할 수 있습니다. 환경.

지연이 발생하고 iPhone의 모바일 데이터 연결 속도가 느립니까? 일반적으로 휴대폰의 셀룰러 인터넷 강도는 지역, 셀룰러 네트워크 유형, 로밍 유형 등과 같은 여러 요소에 따라 달라집니다. 더 빠르고 안정적인 셀룰러 인터넷 연결을 얻기 위해 할 수 있는 일이 몇 가지 있습니다. 수정 1 – iPhone 강제 다시 시작 때로는 장치를 강제로 다시 시작하면 셀룰러 연결을 포함한 많은 항목이 재설정됩니다. 1단계 – 볼륨 높이기 키를 한 번 눌렀다가 놓습니다. 그런 다음 볼륨 작게 키를 눌렀다가 다시 놓습니다. 2단계 - 프로세스의 다음 부분은 오른쪽에 있는 버튼을 누르는 것입니다. iPhone이 다시 시작되도록 하세요. 셀룰러 데이터를 활성화하고 네트워크 속도를 확인하세요. 다시 확인하세요 수정 2 – 데이터 모드 변경 5G는 더 나은 네트워크 속도를 제공하지만 신호가 약할 때 더 잘 작동합니다

SQL Server 설치가 실패하면 다음 단계에 따라 정리할 수 있습니다. SQL Server 제거 레지스트리 키 삭제 파일 및 폴더 삭제 컴퓨터를 다시 시작합니다.
