日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysqldatareader获取整行数据给datarow_SqlDataReader的用法(读取1整行)

發布時間:2024/10/14 数据库 88 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysqldatareader获取整行数据给datarow_SqlDataReader的用法(读取1整行) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

datareader對象提供只讀單向數據的快速傳遞,單向:您只能依次讀取下一條數據;只讀:DataReader中的數據是只讀的,不能修改;相對地,DataSet中的數據可以任意讀取和修改

01.using (SqlConnection connection =

02. new SqlConnection(connectionString))

03.{

04. SqlCommand command =

05. new SqlCommand(queryString, connection);

06. connection.Open();

07.

08. SqlDataReader reader = command.ExecuteReader();

09.

10. // 判斷數據是否讀到尾.

11. while (reader.Read())

12. {

13. Console.WriteLine(String.Format("{0}, {1}",

14. reader[0], reader[1]));

15. }

16.

17. // 一定要關閉 reader 對象.

18. reader.Close();

19.}

SqlDataReader對象GetOrdinal()方法可以查看序列號的值

01.SqlCommand cmd = new SqlCommand();

02.//存儲過程應用

03.cmd.Connection = conn;

04.cmd.CommandType = CommandType.StoredProcedure;

05.cmd.CommandText = "ListTable";

06.cmd.Parameters.AddWithValue("@fileName", "ClsName, Sort");

07.cmd.Parameters.AddWithValue("@tableName", "Class");

08.cmd.Parameters.AddWithValue("@Sort", null);

09.cmd.Parameters.AddWithValue("@whereStr", "ID < 10");

10.cmd.Parameters.AddWithValue("@groupStr", null);

11.SqlDataReader rdr = cmd.ExecuteReader();

12.int intClsName = rdr.GetOrdinal("ClsName");

13.int intSort = rdr.GetOrdinal("Sort");

14.

15.while (rdr.Read())

16.{

17. Console.WriteLine("ClsName : {0}, Sort:{1}", rdr[intClsName], rdr[intSort]);

18. //可以調用SqlDataReader 的 Get 方法來避免由于裝箱,拆箱而導致的性能損失

19. Console.WriteLine("ClsName : {0}, Sort:{1}", rdr.GetString(intClsName), rdr.GetInt32(intSort));

20. //調用SqlDataReader 的 Get 方法在碰到 NULL 值時將會產生一個 SqlNullValueException.可以使用IsDBNull方法判斷

21. articleClass arc = new articleClass();

22. arc.clsname = rdr[0];

23. if (rdr.IsDBNull(rdr[1]))

24. arc.sort = null;

25. else

26. arc.sort = rdr[1];

27. arc.clsname = rdr[1];

28. arc.Add(arc);

29.}

30.rdr.Close();

C# 數據庫使用SqlCommand進行增,刪,改,查詢操作

using System;

using System.Collections.Generic;

using System.Text;

// We will make use of the SQL server

// provider, however it would also be

// permissible to make use of the ADO.NET

// factory pattern for greater flexibility.

using System.Data;

using System.Data.SqlClient;

namespace AutoLotConnectedLayer

{

public class InventoryDAL

{

#region Connection and Disconnection details.

// This member will be used by all methods.

private SqlConnection sqlCn = new SqlConnection();

public void OpenConnection(string connectionString)

{

sqlCn.ConnectionString = connectionString;

sqlCn.Open();

}

public void CloseConnection()

{

sqlCn.Close();

}

#endregion

#region Insert logic (both versions)

//public void InsertAuto(int id, string color, string make, string petName)

//{

// // Format and execute SQL statement.

// string sql = string.Format("Insert Into Inventory" +

// "(CarID, Make, Color, PetName) Values" +

// "('{0}', '{1}', '{2}', '{3}')", id, make, color, petName);

//

// // Execute using our connection.

// using(SqlCommand cmd = new SqlCommand(sql, this.sqlCn))

// {

// cmd.ExecuteNonQuery();

// }

//}

public void InsertAuto(int id, string color, string make, string petName)

{

// Note the 'placeholders' in the SQL query.

string sql = string.Format("Insert Into Inventory" +

"(CarID, Make, Color, PetName) Values" +

"(@CarID, @Make, @Color, @PetName)");

// This command will have internal parameters.

using (SqlCommand cmd = new SqlCommand(sql, this.sqlCn))

{

// Fill params collection.

SqlParameter param = new SqlParameter();

param.ParameterName = "@CarID";

param.Value = id;

param.SqlDbType = SqlDbType.Int;

cmd.Parameters.Add(param);

param = new SqlParameter();

param.ParameterName = "@Make";

param.Value = make;

param.SqlDbType = SqlDbType.Char;

param.Size = 10;

cmd.Parameters.Add(param);

param = new SqlParameter();

param.ParameterName = "@Color";

param.Value = color;

param.SqlDbType = SqlDbType.Char;

param.Size = 10;

cmd.Parameters.Add(param);

param = new SqlParameter();

param.ParameterName = "@PetName";

param.Value = petName;

param.SqlDbType = SqlDbType.Char;

param.Size = 10;

cmd.Parameters.Add(param);

cmd.ExecuteNonQuery();

}

}

#endregion

#region Delete logic

public void DeleteCar(int id)

{

// Get ID of car to delete, then do so.

string sql = string.Format("Delete from Inventory where CarID = '{0}'",

id);

using (SqlCommand cmd = new SqlCommand(sql, this.sqlCn))

{

try

{

cmd.ExecuteNonQuery();

}

catch (SqlException ex)

{

Exception error = new Exception("Sorry! That car is on order!", ex);

throw error;

}

}

}

#endregion

#region Update logic

public void UpdateCarPetName(int id, string newPetName)

{

// Get ID of car to modify and new pet name.

string sql =

string.Format("Update Inventory Set PetName = '{0}' Where CarID = '{1}'",

newPetName, id);

using (SqlCommand cmd = new SqlCommand(sql, this.sqlCn))

{

cmd.ExecuteNonQuery();

}

}

#endregion

#region Select logic

public DataTable GetAllInventory()

{

// This will hold the records.

DataTable inv = new DataTable();

// Prep command object.

string sql = "Select * From Inventory";

using (SqlCommand cmd = new SqlCommand(sql, this.sqlCn))

{

SqlDataReader dr = cmd.ExecuteReader();

// Fill the DataTable with data from the reader and clean up.

inv.Load(dr);

dr.Close();

}

return inv;

}

#endregion

#region Trigger stored proc logic

public string LookUpPetName(int carID)

{

string carPetName = string.Empty;

// Establish name of stored proc.

using (SqlCommand cmd = new SqlCommand("GetPetName", this.sqlCn))

{

cmd.CommandType = CommandType.StoredProcedure;

// Input param.

SqlParameter param = new SqlParameter();

param.ParameterName = "@carID";

param.SqlDbType = SqlDbType.Int;

param.Value = carID;

param.Direction = ParameterDirection.Input;

cmd.Parameters.Add(param);

// Output param.

param = new SqlParameter();

param.ParameterName = "@petName";

param.SqlDbType = SqlDbType.Char;

param.Size = 10;

param.Direction = ParameterDirection.Output;

cmd.Parameters.Add(param);

// Execute the stored proc.

cmd.ExecuteNonQuery();

// Return output param.

carPetName = ((string)cmd.Parameters["@petName"].Value).Trim();

}

return carPetName;

}

#endregion

#region Tx Method

// A new member of the InventoryDAL class.

public void ProcessCreditRisk(bool throwEx, int custID)

{

// First, look up current name based on customer ID.

string fName = string.Empty;

string lName = string.Empty;

SqlCommand cmdSelect = new SqlCommand(

string.Format("Select * from Customers where CustID = {0}", custID), sqlCn);

using (SqlDataReader dr = cmdSelect.ExecuteReader())

{

while (dr.Read())

{

fName = (string)dr["FirstName"];

lName = (string)dr["LastName"];

}

}

// Create command objects which represent each step of the operation.

SqlCommand cmdRemove = new SqlCommand(

string.Format("Delete from Customers where CustID = {0}", custID), sqlCn);

SqlCommand cmdInsert = new SqlCommand(string.Format("Insert Into CreditRisks" +

"(CustID, FirstName, LastName) Values" +

"({0}, '{1}', '{2}')", custID, fName, lName), sqlCn);

// We will get this from the Connection object.

SqlTransaction tx = null;

try

{

tx = sqlCn.BeginTransaction();

// Enlist the commands into this transaction.

cmdInsert.Transaction = tx;

cmdRemove.Transaction = tx;

// Execute the commands.

cmdInsert.ExecuteNonQuery();

cmdRemove.ExecuteNonQuery();

// Simulate error.

if (throwEx)

{

throw new ApplicationException("Sorry! Database error! Tx failed...");

}

// Commit it!

tx.Commit();

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

// Any error will rollback transaction.

tx.Rollback();

SqlCommand 對象的 ExecuteScalar 方法返回一個 Object 數據類型中第一行第一列的值。

view plaincopy to clipboardprint?

01.SqlCommand cmd = new SqlCommand();

02.//存儲過程應用

03.cmd.Connection = conn;

04.cmd.CommandType = CommandType.StoredProcedure;

05.cmd.CommandText = "ListTable";

06.cmd.Parameters.AddWithValue("@fileName", "top 1 ID");

07.cmd.Parameters.AddWithValue("@tableName", "Class");

08.cmd.Parameters.AddWithValue("@Sort", null);

09.cmd.Parameters.AddWithValue("@whereStr", "ID < 4");

10.cmd.Parameters.AddWithValue("@groupStr", null);

11.//可以直接使用 object Obj = cmd.ExecuteScalar(); 然后判斷 Obj == null 并進行下步操作

12.int ClassID = (int)cmd.ExecuteScalar();

13.Console.WriteLine(ClassID);

ExecuteNonQuery執行不返回結果集的查詢,SqlCommand 對象的 ExecuteNonQuery 方法

view plaincopy to clipboardprint?

01.string UPDATE_SP = "update class set clsname = @ClassName where id = @ClassID";

02.SqlCommand cmd = new SqlCommand(UPDATE_SP, conn);

03.SqlParameter[] p = new SqlParameter[2]{

04. new SqlParameter("@ClassName", DbType.String),

05. new SqlParameter("@ClassID", DbType.Int32)

06.};

07.p[0].Value = "Ado.Net";

08.p[1].Value = 7;

09.

10.foreach (SqlParameter parm in p)

11. cmd.Parameters.Add(p);

12.

13.int ExecuteNum = cmd.ExecuteNonQuery();

14.Console.WriteLine(ExecuteNum);

Parameters參數化查詢

,上述代碼中已經實現參數化查詢。Parameters 的作用可有效防止注入。利用AddWithValue 方法把參數傳遞給 cmd 對象。SqlParameter 對象詳解

view plaincopy to clipboardprint?

01.//SqlParameter 對象,利用SqlCommand AddWithValue方法創建 同等于下面

02.cmd.Parameters.AddWithValue("@ClassID", 3);

03.

04.//SqlParameter 對象

05.SqlParameter p = new SqlParameter("@ClassID", DbType.Int16);

06.p.Value = 3;

07.cmd.Parameters.Add(p);

批量操作查詢

,用StatementCompleted事件獲取批量操作查詢時個語句返回的影響數

view plaincopy to clipboardprint?

01.static void HandleStatementCompleted(object sender, StatementCompletedEventArgs e)

02.{

03. Console.WriteLine("查詢影響:{0} row(s)", e.RecordCount);

04.}

05.//..........................................

06.string SQL = "update class set num = 1 where id = 3;" +

07. "update class set num = 2 where id = 4;" +

08. "update class set num = 3 where id = 5;" +

09. "update class set num = 4 where id = 6;";

10.SqlCommand cmd = new SqlCommand(SQL, conn);

11.cmd.StatementCompleted += new StatementCompletedEventHandler(HandleStatementCompleted);

12.int ExecuteNum = cmd.ExecuteNonQuery();

13.Console.WriteLine("批量查詢共影響:{0} row(s)", ExecuteNum);

14.

15.//輸出來自查詢的多個結果集

16.do {

17. while (rdr.Read())

18. Console.WriteLine("{0} - {1}", rdr[0], rdr[1]);

19.

20.} while (rdr.NextResult());

執行異步查詢,SqlCommand公開了Begin, End方法,例如:BeginExecuteReader, EndExecuteReader方法

每個 Begin 方法返回一個實現 IAsyncResult 接口對象。這一返回對象是查詢狀態的一個句柄,IAsyncResult 接口是用于異步方法的.NET Framework 模式的一部分,其設計目的:幫助確定該操作是否已經完成如果需要等待該操作完成則中斷當前線程;用作方法調用的句柄。 IAsyncResult 接口的IsCompleted 屬性,以查看 BeginExecuteReader 調用是否已經完成。調用IAsyncResult.AsyncWaitHandle.WaitOne 使用IAsyncResult接口來等待該調用完成 。

view plaincopy to clipboardprint?

01.using System.Threading; //需引用此命名空間

02.

03.conn.Open();

04.string SQL = "waitfor delay '00:00:10' ;" +

05. "select * from class";

06.SqlCommand cmd = new SqlCommand(SQL, conn);

07.IAsyncResult iar = cmd.BeginExecuteReader();

08.Console.WriteLine("異步查詢是否已經獲取記錄?");

09.while (!iar.IsCompleted)

10.{

11. Console.WriteLine("否,還在等待.");

12. iar.AsyncWaitHandle.WaitOne(1000, true);

13.}

14.Console.WriteLine("是,已經獲取數據.");

15.

16.SqlDataReader rdr = cmd.EndExecuteReader(iar);

17.while (rdr.Read())

18.{

19. Console.WriteLine(rdr["ClsName"]);

20.}

21.rdr.Close();

總結

以上是生活随笔為你收集整理的mysqldatareader获取整行数据给datarow_SqlDataReader的用法(读取1整行)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。