當前位置:首頁 » 存儲配置 » c存儲過程datatable

c存儲過程datatable

發布時間: 2022-11-15 01:05:31

❶ C#中如何判斷 DataTable 內是否有數據

對DataTable數據各種篩選
篩選一個DataTable的數據,賦值給另外一個DataTable
假設:
有2個DataTable:DataTable A、DataTable B。
要求:
篩選DataTable A中itemType欄位值為book的數據,然後把篩選出來的數據,賦給DataTable B
實現:
(1)方法一:通過 RowFilter 篩選實現
DataView view = new DataView();
view.Table = A;
view.RowFilter = "itemType = 'book'";//itemType是A中的一個欄位
B= view.ToTable();
(2)方法二:通過 Select()篩選
DataRow[] rows = A.Select("itemType = 'book'");
B= A.Clone(); //克隆A的結構
foreach (DataRow row in rows)
{
B.ImportRow(row);//復制行數據
}
註:如果有多個篩選條件的話,可以加 and 或 or。例如: A.Select("itemType = 'book' and a='b' or a='c'");

❷ 如何將datatable傳入存儲過程中

一、測試環境
1、Windows Server 2008 R2 DataCenter
2、Visual Studio 2008 Team System With SP1
3、sql Server 2008 Enterprise Edition With SP1
由於是SQL Server 2008新特性,所以只能用2008。
二、測試概述
測試項目很簡單,就是添加新用戶
三、准備數據
1、建立資料庫、表、類型、存儲過程

IF NOT EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('Users') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
CREATE TABLE dbo.Users
(
UserID INT IDENTITY(-1, -1) NOT NULL,
UserName VARCHAR(20) NOT NULL,
UserPass VARCHAR(20) NOT NULL,
Sex BIT NULL,
Age SMALLINT NULL,
CONSTRAINT PK_Users_UserID PRIMARY KEY(UserID)
)
END
IF NOT EXISTS(SELECT * FROM sys.table_types WHERE name = 'UserTable' AND is_user_defined = 1)
BEGIN
CREATE TYPE UserTable AS TABLE
(
UserName VARCHAR(20) NOT NULL,
UserPass VARCHAR(20) NOT NULL,
Sex BIT NULL,
Age SMALLINT NULL
)
END
GO


IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('sp_InsertSingleUser') AND OBJECTPROPERTY(id, N'IsProcere') = 1)
BEGIN
DROP PROCEDURE dbo.sp_InsertSingleUser
END
GO
CREATE PROCEDURE dbo.sp_InsertSingleUser
(
@User UserTable READONLY
)
AS
SET XACT_ABORT ON
BEGIN TRANSACTION
INSERT INTO dbo.Users(UserName, UserPass, Sex, Age)
SELECT UserName, UserPass, Sex, Age FROM @User
COMMIT TRANSACTION
SET XACT_ABORT OFF
GO


前台搭建好表單,後台主要是一個函數:

publicvoidfnInsertSingleUser(DataTablev_dt)
{
try
{
SqlConnectioncn=newSqlConnection(CONN);
SqlCommandcmd=cn.CreateCommand();
cmd.CommandType=CommandType.StoredProcere;
cmd.CommandText=@"sp_InsertSingleUser";
SqlParameterp=cmd.Parameters.AddWithValue("@User",v_dt);
DataSetds=newDataSet();
SqlDataAdapterda=newSqlDataAdapter(cmd);
da.Fill(ds);
}
catch(Exceptionex)
{
throwex;
}
}

❸ C#中一個存儲過程返回兩個結果集,如下圖,該如何用Datagridview調用

執行存儲過程調用的是ADO.net
返回的結果集是一個DataSet對象。
如果不是,請檢查下你的數據連接庫,改下代碼。
如果存儲過程返回的是兩個結果集,那麼返回的DataSet就有兩個DataTable對象。
調用的時候
只需要
DataSet
ds=dbHelper.RunProcere("Web_pGetDataPager");//假設的返回dataset對象的執行存儲過程的方法。
ds.Tables[0]
就是第一個結果集
ds.Tables[1]
就是第二個結果集
//弱綁定第二個結果集
就是下面這樣
Datagridview.DataSource=ds.Table[1];
Datagridview.DataBind();

❹ C#中如何使用DataSet和DataTable接收從資料庫傳過來的值 詳細代碼 謝謝 (初學者)

/// <summary>
/// SQL Server 的資料庫連接字元串.
/// </summary>
private const String connString =
@"Data Source=localhost\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True";

/// <summary>
/// 用於查詢的 SQL 語句.
/// </summary>
private const String SQL =
@"
SELECT
TOP 3
ROW_NUMBER() OVER (ORDER BY SUM(SALE_MONEY) DESC) AS NO,
SALE_DATE,
SUM(SALE_MONEY) AS SUM_MONEY
FROM
SALE_REPORT
GROUP BY
SALE_DATE
ORDER BY
SUM(SALE_MONEY) DESC";

/// <summary>
/// 將數據讀取到 DataSet 中.
///
/// 這里演示了2種方式,一種是從資料庫中讀取,一種是從XML文件中讀取.
/// </summary>
public void ReadDataToDataSet()
{

Console.WriteLine("使用DataAdapter,將數據填充到DataSet中,然後脫離資料庫,直接對DataSet進行處理。");
// 建立資料庫連接.
SqlConnection conn = new SqlConnection(connString);
// 創建一個適配器
SqlDataAdapter adapter = new SqlDataAdapter(SQL, conn);
// 創建DataSet,用於存儲數據.
DataSet testDataSet = new DataSet();
// 執行查詢,並將數據導入DataSet.
adapter.Fill(testDataSet, "result_data");
// 關閉資料庫連接.
conn.Close();

// 處理DataSet中的每一行數據.
foreach (DataRow testRow in testDataSet.Tables["result_data"].Rows)
{
// 將檢索出來的數據,輸出到屏幕上.
Console.WriteLine("NO:{0} ; Date:{1} ; Money:{2} ",
testRow["NO"], testRow["SALE_DATE"], testRow["SUM_MONEY"]
);
}

// 注意:
// 在通過 DataTable 的 WriteXml 方法來導出數據,給其他系統使用的時候
// 還需要使用 WriteXmlSchema 來導出 Schema
// 否則在使用 ReadXml 讀取的時候, 會發生錯誤,因為新的 DataTable 不知道表的結構,不知道該如何去讀取.
// 除非你手動設置好每個列的欄位/數據類型等信息,那麼 DataSet 或者 DataTable 將能夠理解如何倒入,而不在需要 ReadXmlSchema
Console.WriteLine("將 DataTable 的數據,寫入到 XML 文件中。");
testDataSet.Tables["result_data"].WriteXmlSchema(DATATABLE_SCHEMA_XML_FILE);
testDataSet.Tables["result_data"].WriteXml(DATATABLE_XML_FILE);

Console.WriteLine("從 XML 文件中,讀取數據到 DataTable 裡面。");
DataTable newDt = new DataTable();
newDt.ReadXmlSchema(DATATABLE_SCHEMA_XML_FILE);
newDt.ReadXml(DATATABLE_XML_FILE);

// 處理DataSet中的每一行數據.
foreach (DataRow testRow in newDt.Rows)
{
// 將檢索出來的數據,輸出到屏幕上.
Console.WriteLine("NO:{0} ; Date:{1} ; Money:{2} ",
testRow["NO"], testRow["SALE_DATE"], testRow["SUM_MONEY"]
);
}
}

❺ C# 存儲過程 如何返回 tatatable

Database db = DALFactory.DatabaseCustomFoctory.CreateDatabase();
if (db != null)
{
string sqlCommand = "Web_DataV10_Area_SelectLayer";
DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand);
db.AddInParameter(dbCommand, "OperatorID", DbType.Int32, EmpID);
db.AddInParameter(dbCommand, "AreaID", DbType.String, "");
ds = db.ExecuteDataSet(dbCommand);
現在都用工廠了,這種方法你可以體驗一下,直接調用sql資料庫中的存貯過程,返回dataset,得到datatable,不用SqlDataAdapter,可以嗎

❻ c#調用存儲過程,實現向資料庫表中添加數據

//使用SqlDataAdapter調用存儲過程(主要應用於查詢)
private void Form1_Load(object sender, EventArgs e)//窗口載入事件
{
SqlConnection conn = null;//聲明SqlConnection,用於連接資料庫
try
{
conn = new SqlConnection("server=.;database=要連接的資料庫名;uid=登陸資料庫的賬號;pwd=登錄資料庫的密碼");
SqlDataAdapter sda = new SqlDataAdapter("proc_SelectAllStuInfo",conn);//聲明SqlDataAdapter適配器,括弧里的第一個參數是要掉的存儲過程的名字,第二個參數是連接資料庫的Conn。
DataSet ds = new DataSet();//new一個DataSet數據集(臨時倉庫)
sda.Fill(ds);//把適配器里的結果填充到DataSet里
DataTable dt = ds.Tables[0];//創建一個DataTable獲取DataSet里的數據
this.dgvStuInfo.DataSource = dt;//把DataTable中的數據綁定到DataGridView中
}
//抓異常
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
finally
{
conn.Close();//最後關閉資料庫連接
}
}

❼ 利用C#語言,調用存儲過程,使用三層架構實現,我需要實現的功能見問題補充

先寫Dal層
public datatable GetTable()
{
SqlConnection conn=new SqlConnection ();
conn.ConnectionString="Server=(local);database=db;uid=sa;pwd=sa";//連接數據源
conn.Open();
SqlCommand cmd=new SqlCommand("Select",conn);//其中select為存儲過程名稱
cmd.CommandType = CommandType.StoredProcere;//指定執行類型為存儲過程
DataTable dt = new DataTable();
//執行存儲過程
SqlDataAdapter sda=new SqlDataAdapter(cmd);
//將結果填充到datatable中
sda.Fill(dt);
return dt;//返回Datatable
}

Bll層
//實例化Dal層方法
DAL dal=new DAL();
public datatable BllGetTable()
{// 獲取數據表
return dal.GetTable();
}

頁面層
//實例化Bll層方法
Bll bll=new Bll();
Datatable dt=new datatable();
// 調用Bll層方法
dt=bll.BllGetTable();

❽ C#如何獲取datatable指定行的值

/定義表
DataTable dt = new DataTable();

//填充表

//獲得行
DataRow dr1 = dt.Rows.Find("Key");
DataRow dr2 = dt.Rows[0];

//獲得列數據
string colString1 = dr1[1].ToString();
string colString2 = dr1["ColumnName"].ToString();

❾ C#如何接收存儲過程的返回結果集

請看下面加粗代碼 public static string[] GetUserInformation() //獲得用戶詳細信息 { DataSet ds = new DataSet(); SqlDataAdapter adapter = new SqlDataAdapter(); string[] InForMation = new string[3]; using (SqlConnection conn = new SqlConnection(getTools.ConnString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("prou_iflogin", conn)) { cmd.CommandType = CommandType.StoredProcere; cmd.Parameters.Add("@userid", SqlDbType.VarChar); cmd.Parameters["@userid"].Value = user.Userid; cmd.ExecuteNonQuery(); adapter.SelectCommand = cmd; if (ds != null) { adapter.Fill(ds, "userinfo"); } //這里怎麼把ds的數據讀取出來放到數組裡面呢? //下面的就是放到數組里的代碼 DataTable dt = ds.Table[0]; string[] strmds = new string[dt.Rows.Count]; string[] strtime = new string[dt.Rows.Count]; string[] username = new string[dt.Rows.Count]; for(int i=0;i<dt.Rows.Count;i++) { strmds[i] = dt.Rows[i][0].ToString(); strtime[i] = dt.Rows[i][1].ToString(); username[i] = dt.Rows[i][2].ToString(); } } return InForMation; } }

❿ c#中的DataTable如何修改數據類型

很簡單。修改下值就可以。
我想LZ要學會自己思考。我想這個你都沒有思考一看不會就發上來了。我給你寫下如何生成DataTable的步驟。然後自己思考,修改下。
最簡單的方式
DataTable dt=new DataTable("Table1"); //創建數據表
DataColumn dcID=new DataColumn("ID",typeof(int)); //創建ID列
DataColumn dcName=new DataColumn("Name",typeof(string));//創建姓名列
DataColumn dcState=new DataColumn("State",typeof(int));//創建狀態列

//把創建的三列放在DataTable中
dt.Columns.Add(dcID); dt.Columns.Add(dcName);
dt.Columns.Add(dcState);
//創建數據行。
DataRow dr=dt.NewRow();
dr["ID"]=1; dr["Name"]=A; dr["State"]=1;
//把創建的行插入到數據表「Table1」中
dt.Rows.Add(dr);
//如上,這樣就創建了一個如題所示的數據表的過程。

如果你想把bit型轉換為char型。只需要候改下插入的列即可。
如將狀態列改為:
DataColumn dcState=new DataColumn("State",typeof(char)); //此處將其改為Char類型。
//如上所示數據行
DataRow dr=dt.NewRow();
dr["ID"]=1; dr["Name"]=A; dr["State"]="是"; //把State列的值改為"是"或「否」即可。

打了半天,只希望樓主能從中體會如何自定義DataTable。
GoodLuck!!

熱點內容
王者榮耀ios系統如何轉到安卓系統 發布:2025-07-16 20:52:37 瀏覽:692
青少年趣味編程社區 發布:2025-07-16 20:35:26 瀏覽:96
小黃車怎麼更改密碼 發布:2025-07-16 20:34:43 瀏覽:189
為什麼國產車氣囊少配置高 發布:2025-07-16 20:18:46 瀏覽:461
pci加密解密控制器驅動 發布:2025-07-16 20:16:18 瀏覽:175
銳龍本編程 發布:2025-07-16 19:35:08 瀏覽:645
初學c語言用什麼軟體 發布:2025-07-16 19:29:12 瀏覽:339
編譯原理實驗分析子程序 發布:2025-07-16 19:28:06 瀏覽:463
長江存儲宿舍有wifi嗎 發布:2025-07-16 19:20:45 瀏覽:872
sqlservertrigger 發布:2025-07-16 19:08:19 瀏覽:400