検索

SQLServer数据访问

Jun 07, 2016 pm 03:40 PM
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
{
}

其它数据访

 


(一)构造:

(二)属性:
(三)方法:
(四)重要代码:

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQL:初心者が習得するための必須スキルMySQL:初心者が習得するための必須スキルApr 18, 2025 am 12:24 AM

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQL:構造化データとリレーショナルデータベースMySQL:構造化データとリレーショナルデータベースApr 18, 2025 am 12:22 AM

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQL:説明されている主要な機能と機能MySQL:説明されている主要な機能と機能Apr 18, 2025 am 12:17 AM

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLの目的:MySQLデータベースとの対話SQLの目的:MySQLデータベースとの対話Apr 18, 2025 am 12:12 AM

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

初心者向けのMySQL:データベース管理を開始します初心者向けのMySQL:データベース管理を開始しますApr 18, 2025 am 12:10 AM

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

MySQLの役割:WebアプリケーションのデータベースMySQLの役割:WebアプリケーションのデータベースApr 17, 2025 am 12:23 AM

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

MySQL:最初のデータベースを構築しますMySQL:最初のデータベースを構築しますApr 17, 2025 am 12:22 AM

MySQLデータベースを構築する手順には次のものがあります。1。データベースとテーブルの作成、2。データの挿入、および3。クエリを実行します。まず、createdAtabaseおよびcreateTableステートメントを使用してデータベースとテーブルを作成し、InsertINTOステートメントを使用してデータを挿入し、最後にSelectステートメントを使用してデータを照会します。

MySQL:データストレージに対する初心者向けのアプローチMySQL:データストレージに対する初心者向けのアプローチApr 17, 2025 am 12:21 AM

MySQLは、使いやすく強力であるため、初心者に適しています。 1.MYSQLはリレーショナルデータベースであり、CRUD操作にSQLを使用します。 2。インストールは簡単で、ルートユーザーのパスワードを構成する必要があります。 3.挿入、更新、削除、および選択してデータ操作を実行します。 4. Orderby、Where and Joinは複雑なクエリに使用できます。 5.デバッグでは、構文をチェックし、説明を使用してクエリを分析する必要があります。 6.最適化の提案には、インデックスの使用、適切なデータ型の選択、優れたプログラミング習慣が含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール