一、連接數據庫

1.定義連接數據庫的字符串

 string source = "server=(local); integrated security=SSPI; database=test";

2.數據庫連接開啟、關閉

 var conn = new SqlConnection(source);
conn.Open()
// do something
conn.Close()

3.對數據庫連接進行優化

  數據庫連接屬於稀缺資源的使用,使用完後必須立即關閉避免出現資源匱乏的情況。因此關閉數據庫連接應是強制的,可以通過兩種方式來確保數據庫資源使用完后立即釋放。

  3.1 使用try...catch...finally語句塊

 try
{
conn.Open();
// Do something
}
catch (SqlException e)
{
// Log the exception
}
finally
{
conn.Close();
}

  3.2 使用using語句塊

 using (SqlConnction conn = new SqlConnection(source))
{
conn.Open();
// Do something
}

  3.3 將using語句塊與try...catch...finally語句塊結合

 try
{
using (var conn = new SqlConnction(source))
{
conn.Open();
// Do something
conn.Close();
}
}
catch (SqlException e)
{
Console.WriteLine(e.Message);
}

二、操作數據庫

1. SELECT操作

//    連接數據庫語句在這寫
string select = "SELECT UserName FROM _Users";
// 開啟數據庫語句在這寫
var cmd = new SqlCommand(select, conn);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[]);
}
// 關閉數據庫語句在這寫

2. INSERT操作

 //  連接數據庫語句在這寫

 string insert = "INSERT INTO _Users (Id, Name, UserName, Password, Score) VALUES (@ID, @NAME, @USERNAME, @PASSWORD, @SCORE)";

 //  開啟數據庫語句在這寫

 var cmd = new SqlCommand(insert, conn);
SqlParameter[] param = {
new SqlParameter("@ID", user.Id),
new SqlParameter("@NAME", user.Name),
new SqlParameter("@USERNAME", user.UserName),
new SqlParameter("@PASSWORD", user.Password),
new SqlParameter("@SCORE", user.HightScore),
};
15 for (int i = ; i < ; i++)
{
cmd.Parameters.Add(param[i]);
}
cmd.ExecuteNonQuery(); // 關閉數據庫語句在這寫

3. DELECT操作

 string userName = Console.ReadLine();

 //    連接數據庫操作寫在這

 var delete = "DELETE FROM _Users WHERE UserName = '"+userName+"'";

 //    開啟數據庫操作寫在這

 var cmd = new SqlCommand(delete, conn);
int res = cmd.ExecuteNonQuery();
if (res == )
Console.Write("刪除失敗.");
else
Console.Write("刪除成功"); // 關閉數據庫操作寫在這

4. UPDATE操作

 string userName = Console.ReadLine();
string password = Console.ReadLine();
// 連接數據庫寫在這 var update = "UPDATE _Users SET Password = '"+new_password+"' WHERE UserName = '"+userName+"' "; // 開啟數據庫操作寫在這 var cmd = new SqlCommand(update, conn);
var res = cmd.ExecuteNonQuery();
if (res == )
Console.WriteLine("修改失敗.");
else
Console.WriteLine("修改成功."); // 關閉數據庫操作寫在這

三、在數據庫語句中傳遞參數的兩個方法

1.直接寫入法

  參考第二節第3小節“DELETE操作”代碼。

2.給命令對象添加參數法

  參考第二節第3小節“INSERT操作”代碼。

C#數據庫的更多相关文章

  1. python連接mysql數據庫

    第一步,安裝mysql數據庫. 這裏我安裝的是mariadb數據庫,版本5.5,並且配置好了字符集.此處不詳細敘述,相信大家沒有問題. 第二步,安裝mysql驅動. 首先說明一下有兩個主要的驅動: m ...

  2. PB C/S轉B/S ODBC方式連接數據庫

    PB C/S轉B/S ODBC方式連接數據庫,DSN需要建為系統而不是使用者DSN,否則連不上數據庫.

  3. 一次 C# 查詢數據庫 算法優化的案例

    最近有次在修改某段程式時,發現一段程式算法看起來簡單. 但背後因為多次查詢數據庫,導致效能問題. 這段程式主要是利用 EPPLUS 讀取 Excel 資料,檢查資料是否已存在數據庫中,若有就將已存在的 ...

  4. 使用DataSet與DataAdapter對數據庫進行操作

    1.定義連接字符串 var source = "server=(local); integrated security=SSPI; database=test"; var conn ...

  5. 在Android中afinal框架下實現sqlite數據庫版本升級的辦法

    public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version) 這個方法在實現時需要重寫.   pub ...

  6. 數據庫ORACLE轉MYSQL存儲過程遇到的坑~(總結)

    ORACLE數據庫轉MySQL數據庫遇到的坑 總結 最近在做Oracle轉mysql的工程,遇到的坑是真的多,尤其是存儲過程,以前都沒接觸過類似的知識,最近也差不多轉完了就總結一下.希望能幫到一些人( ...

  7. MVC+Ninject+三层架构+代码生成 -- 总结(一、數據庫)

    一.數據表 是參照 別人的庫建表的 ,主鍵都是用int 自增,若是跨數據庫的話,建議使用GUID為主鍵.

  8. Scrapy——將數據保存到MySQL數據庫

    Scrapy--將數據保存到MySQL數據庫 1. 在MySQL中創建數據庫表job_inf: 1 Create table job_inf( 2 id int(11) not null auto_i ...

  9. C#在sql中使用變量訪問Oracle數據庫

    1.首先創建一個測試數據表 CREATE TABLE people ( SNO BYTE), SNAME BYTE), SSEX BYTE), SAGE number, SDEPT BYTE), BT ...

随机推荐

  1. java DTO对象与PO对象的相互转换

    2018-09-27 10:27:50 前言: 在实际开发中往往需要DTO对象与PO对象的相互转换: 先说说什么是DTO对象吧,个人觉得DTO就是PO的扩展而已,PO专门指向数据库,DTO作扩展(字段 ...

  2. python 面试题知识回顾

    1. python 函数 的参数传递 a = 1 def fun(a): a = 2 fun(a) print a # 1 a = [] def fun(a): a.append(1) fun(a) ...

  3. 搭积木(java)-蓝桥杯

    搭积木小明最近喜欢搭数字积木,一共有10块积木,每个积木上有一个数字,0~9.搭积木规则:每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小.最后搭成4层的金字塔形,必须用完所有的积木.下 ...

  4. 手动安装OpenCV下的IPP加速库

    写在前面 安装opencv的时候,往往会卡在这里: IPPICV: Download: ippicv_2019_lnx_intel64_general_20180723.tgz 其实就是墙的原因,然后 ...

  5. touchweb网站常见问题,手机网站注意问题

    一.h5网站input 设置为type=number的问题 h5网页input 的type设置为number一般会产生三个问题,一个问题是maxlength属性不好用了.另外一个是form提交的时候, ...

  6. qq跳转

    给<a href="http://wpa.qq.com/msgrd?v=3&uin=1061214467&site=qq&menu=yes">& ...

  7. [Swift]LeetCode206. 反转链表 | Reverse Linked List

    Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5->4-> ...

  8. [Swift]LeetCode437. 路径总和 III | Path Sum III

    You are given a binary tree in which each node contains an integer value. Find the number of paths t ...

  9. [Swift]LeetCode799. 香槟塔 | Champagne Tower

    We stack glasses in a pyramid, where the first row has 1 glass, the second row has 2 glasses, and so ...

  10. mac openresty 源码安装 坑

    下载openresty源码安装 下载页面http://openresty.org/cn/download.html 下载上一个版本的稳定版 https://openresty.org/download ...