網站首頁 編程語言 正文
一、SqlDataReader
SqlConnection conn = new SqlConnection("server=10.126.64.11;user=it_oper;pwd=IT@SME2018;database=MESOtheata;");
conn.Open();
SqlCommand cmd = new SqlCommand("select * from [A_Emp_Dept_20190522]", conn);// 或者
//或者 SqlCommand cmd=conn.CreateCommand();cmd.CommandText="";
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);//讀取完畢自動關閉連接
for (int i = 0; i < reader.FieldCount - 1; i++)
{
Console.WriteLine(reader.GetName(i));//獲取字段名
while (reader.Read())//或者使用reader.HasRows屬性判斷時候有記錄
{
Console.WriteLine(reader.GetDateTime(0).ToString());
//或者 Console.WriteLine(Convert.ToDateTime(reader[0]).ToString());
object[] values = new object[reader.FieldCount - 1];
reader.GetValues(values);//讀取一行所有字段的內容到Values字段中
if (reader.IsDBNull(0)
{
//判斷某字段是否為null值。
}
}
}
reader.Close();
//系統未關閉時,本Command更改CommandText后或新建Command還有繼續使用此連接。
//conn.Close();
二、參數化查詢
1、使用SQLClient:
SqlCommand cmd = new SqlCommand("select * from [A_Emp_Dept_20190522] where empname=@empname", conn);
SqlParameter para = new SqlParameter("@empname", SqlDbType.NVarChar, 10);
para.Value = "曾亮";
cmd.Parameters.Add(para);
//或者直接 cmd.Parameters.AddWithValue("@empname","曾亮");
2、使用OleDb:
OleDbCommand cmd = new OleDbCommand("select * from [A_Emp_Dept_20190522] where empname like ? and line like ?", conn);
cmd.Parameters.AddWithValue("@empname", "曾亮");
cmd.Parameters.AddWithValue("@line", "ODMZ%");//參加的參數的順序應與?號的順序相同,參數名可隨意執行,甚至可以是空串。
三、執行無返回值的查詢:cmd.ExecuteNonQuery()
SqlCommand cmd = new SqlCommand("update [A_Emp_Dept_20190522] set dept='aa' where dept='' ", conn);
int RecordAffected = cmd.ExecuteNonQuery();
if (RecordAffected == 0)
{
Console.Write("操作失敗");
}
四、執行返回單值的查詢:cmd.ExecuteScalar()
SqlCommand cmd = new SqlCommand("select count(*) from [A_Emp_Dept_20190522] ", conn);
if (Convert.ToInt32(cmd.ExecuteScalar()) == 0)//無記錄,返回null
{
Console.Write("無記錄");
}
五、使用Transaction事務
SqlTransaction trans = null;
try
{
trans = conn.BeginTransaction();//默認事務隔離級別為ISolationLevel.Serilizable,Oracle為ISolationLevel.ReadCommited
SqlCommand cmd = new SqlCommand("Insert int **", conn);
cmd.Transaction = trans;//為命令指定一個事務
cmd.ExecuteNonQuery();
//可以有多個SqlCommand一并執行,一起提交或回滾
trans.Commit();
}
catch
{
trans.Rollback();
}
Transaction事務隔離級別:
六、調用存儲過程
SqlCommand cmd = new SqlCommand("GetCustomer", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter para1 = new SqlParameter("@CustomerID", SqlDbType.NChar, 10);
para1.Value = "UINET";
cmd.Parameters.Add(para1);
SqlParameter para2 = new SqlParameter("@CompanyName", SqlDbType.NVarChar, 30);
para2.Direction = ParameterDirection.Output;
cmd.Parameters.Add(para2);
cmd.ExecuteNonQuery();
Console.WriteLine(cmd.Parameters["@CompanyName"].Value);
七、使用DataReader獲取數據庫模式信息
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly);//僅僅讀取模式信息
DataTable table = reader.GetSchemaTable();
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
Console.WriteLine(col.ColumnName + row[col.ColumnName]);
}
}
八、瀏覽多個結果集
SqlCommand cmd = new SqlCommand("select * from Catogories;select * from Customers", conn);
SqlDataReader reader = cmd.ExecuteReader();//僅僅讀取模式信息
DataTable table = reader.GetSchemaTable();
do//首先自動定位在第一個結果集上
{
while (reader.Read())
{
Console.Write(reader[0]);
}
} while (reader.NextResult());
九、DbDataReader類
從數據源中讀取行的只進流,包含SqlDataReader ,OleDbDataReader ,OdbcDataReader ,實現了IDataReader IDataRecord 接口
- 屬性
IsClosed??? 獲取一個值,該值指示數據讀取器是否已關閉。
FieldCount??? 獲取當前行中的列數。
Item[Int32]??? 獲取位于指定索引處的列。
Item[String]??? 獲取具有指定名稱的列。
- 方法
Close()??? 關閉 IDataReader 對象。
GetSchemaTable()??? 返回一個 DataTable,它描述 IDataReader 的列元數據。
NextResult()??? 在讀取一批 SQL 語句的結果時,使數據讀取器前進到下一個結果。
Read()??? 讓 IDataReader 前進到下一條記錄。
Get***(Int32)??? 獲取指定列的值。
GetValues(Object[])??? 使用當前記錄的列值填充對象的數組。
IsDBNull(Int32)??? 返回指定字段是否設置為 null。
原文鏈接:https://www.cnblogs.com/springsnow/p/9433913.html
相關推薦
- 2022-06-12 Flutter仿微信通訊錄實現自定義導航條的示例代碼_Android
- 2022-05-29 消息隊列應用場景介紹_其它綜合
- 2022-12-15 python中的閉包和裝飾器的使用示例_python
- 2022-07-30 Linux下查看文件和文件夾大小
- 2023-05-07 C++中set/multiset與map/multimap的使用詳解_C 語言
- 2022-08-25 .net加載失敗的程序集實現重新加載_實用技巧
- 2022-09-19 Nginx最大連接數配置詳解_nginx
- 2023-02-27 pandas?實現?in?和?not?in?的用法及使用心得_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支