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 までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

指定されたオブジェクトが sqlserver データベースにすでに存在するという問題を解決する方法 指定されたオブジェクトが sqlserver データベースにすでに存在するという問題を解決する方法 Apr 05, 2024 pm 09:42 PM

SQL Server データベースに既に存在する同じ名前のオブジェクトについては、次の手順を実行する必要があります。 オブジェクトの種類 (テーブル、ビュー、ストアド プロシージャ) を確認します。 IF NOT EXISTS を使用すると、オブジェクトが空の場合に作成をスキップできます。オブジェクトにデータがある場合は、別の名前を使用するか、構造を変更してください。既存のオブジェクトを削除するには、DROP を使用します (注意してください。バックアップを推奨します)。スキーマの変更をチェックして、削除または名前変更されたオブジェクトへの参照がないことを確認します。

mdfファイルをsqlserverにインポートする方法 mdfファイルをsqlserverにインポートする方法 Apr 08, 2024 am 11:41 AM

インポート手順は次のとおりです。 MDF ファイルを SQL Server のデータ ディレクトリ (通常は C:\Program Files\Microsoft SQL Server\MSSQL\DATA) にコピーします。 SQL Server Management Studio (SSMS) でデータベースを開き、[アタッチ] を選択します。 「追加」ボタンをクリックして、MDF ファイルを選択します。データベース名を確認し、「OK」ボタンをクリックします。

sqlserver サービスを開始できない場合の対処方法 sqlserver サービスを開始できない場合の対処方法 Apr 05, 2024 pm 10:00 PM

SQL Server サービスの開始に失敗した場合の解決手順は次のとおりです。 エラー ログを確認して、根本原因を特定します。サービス アカウントにサービスを開始する権限があることを確認してください。依存関係サービスが実行されているかどうかを確認します。ウイルス対策ソフトウェアを無効にします。 SQL Server のインストールを修復します。修復が機能しない場合は、SQL Server を再インストールします。

SQLサーバーのポート番号を確認する方法 SQLサーバーのポート番号を確認する方法 Apr 05, 2024 pm 09:57 PM

SQL Server のポート番号を表示するには: SSMS を開いてサーバーに接続します。オブジェクト エクスプローラーでサーバー名を見つけ、右クリックして [プロパティ] を選択します。 「接続」タブで、「TCP ポート」フィールドを表示します。

SQLserver データベースはどこにありますか? SQLserver データベースはどこにありますか? Apr 05, 2024 pm 08:21 PM

SQL Server データベース ファイルは、通常、次のデフォルトの場所に保存されます。 Windows: C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data データベース ファイルの場所は、データベース ファイル パスを変更することでカスタマイズできます。設定。

sqlserverで誤って削除したデータベースを回復する方法 sqlserverで誤って削除したデータベースを回復する方法 Apr 05, 2024 pm 10:39 PM

SQL Server データベースを誤って削除した場合は、次の手順を実行して回復できます: データベース アクティビティの停止、ログ ファイルのバックアップ、データベース ログの確認、回復オプション: バックアップからの復元、トランザクション ログからの復元、DBCC CHECKDB の使用、3 番目の使用パーティーツール。データ損失を防ぐために、データベースを定期的にバックアップし、トランザクション ログを有効にしてください。

iPhoneのセルラーデータインターネット速度が遅い:修正 iPhoneのセルラーデータインターネット速度が遅い:修正 May 03, 2024 pm 09:01 PM

iPhone のモバイル データ接続に遅延や遅い問題が発生していませんか?通常、携帯電話の携帯インターネットの強度は、地域、携帯ネットワークの種類、ローミングの種類などのいくつかの要因によって異なります。より高速で信頼性の高いセルラー インターネット接続を実現するためにできることがいくつかあります。解決策 1 – iPhone を強制的に再起動する 場合によっては、デバイスを強制的に再起動すると、携帯電話接続を含む多くの機能がリセットされるだけです。ステップ 1 – 音量を上げるキーを 1 回押して放します。次に、音量小キーを押して、もう一度放します。ステップ 2 – プロセスの次の部分は、右側のボタンを押し続けることです。 iPhone の再起動が完了するまで待ちます。セルラーデータを有効にし、ネットワーク速度を確認します。もう一度確認してください 修正 2 – データ モードを変更する 5G はより優れたネットワーク速度を提供しますが、信号が弱い場合はより適切に機能します

インストールが失敗した場合に sqlserver を削除するにはどうすればよいですか? インストールが失敗した場合に sqlserver を削除するにはどうすればよいですか? Apr 05, 2024 pm 11:27 PM

SQL Server のインストールが失敗した場合は、次の手順に従ってクリーンアップできます。 SQL Server をアンインストールする レジストリ キーを削除する ファイルとフォルダーを削除する コンピューターを再起動する

See all articles