當前位置:首頁 » 存儲配置 » c調用sql存儲過程

c調用sql存儲過程

發布時間: 2022-04-22 13:52:33

❶ 怎樣在C#中調用sql存儲過程

1)執行一個沒有參數的存儲過程的代碼如下:
SqlConnection conn=new SqlConnection(「connectionString」);
SqlDataAdapter da = new SqlDataAdapter();
da.selectCommand = new SqlCommand();
da.selectCommand.Connection = conn;
da.selectCommand.CommandText = "NameOfProcere";
da.selectCommand.CommandType = CommandType.StoredProcere;
(2)執行一個有參數的存儲過程的代碼如下
SqlConnection conn=new SqlConnection(「connectionString」);
SqlDataAdapter da = new SqlDataAdapter();
da.selectCommand = new SqlCommand();
da.selectCommand.Connection = conn;
da.selectCommand.CommandText = "NameOfProcere";
da.selectCommand.CommandType = CommandType.StoredProcere;
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToDateTime(inputdate);
da.selectCommand.Parameters.Add(param);
若需要添加輸出參數:
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Output;
param.Value = Convert.ToDateTime(inputdate);
da.selectCommand.Parameters.Add(param);
若要獲得參儲過程的返回值:
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.ReturnValue;

❷ 在Studio C# 2010中怎麼調用SQL中的存儲過程

調用sql server的存儲過程 需要一定的格式,這就像學刀法,格式就是刀譜,而對程序語言的理解就是心法,編程序不能只靠刀譜,每次編程都是從例子上拷貝粘貼,也不能只靠心法,否則語法混亂。這是一點編程的理解。
1,首先,需要創建一個存儲過程,例子如下
create PROCEDURE dbo.ProcessMeetRec_SingleRec
@a int,
@b int output,
@c varchar(5) output
as
if @a = 1
begin
select @c = 'a'
select @b = 9
return -1
end
if @b = 3
begin
select @c = 'b'
return -2
end
begin tran
insert book_user(logname) values('aaa')
if @@error <> 0
begin
--插入簽到記錄失敗
raiserror ('插入簽到記錄失敗',16,1) with seterror
rollback tran
return -9
end
return 1
注意,@b可以作為輸入輸出參數,@a是輸入參數,@c是輸出參數
2 ,定義一個調用存儲過程的方法
public bool ProcessMeetRec_SingleRec(int a,ref int b,ref string c)
{
if (!CheckConn())
{
return false;
}
try
{
SqlCommand cmd = new SqlCommand("ProcessMeetRec_SingleRec", _cn);
cmd.CommandType = CommandType.StoredProcere;
cmd.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
cmd.Parameters["@a"].Value = a;
cmd.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));
cmd.Parameters["@b"].Direction = ParameterDirection.InputOutput;
cmd.Parameters["@b"].Value = 6;
cmd.Parameters.Add(new SqlParameter("@c", SqlDbType.VarChar, 20));
cmd.Parameters["@c"].Direction = ParameterDirection.Output;
//存儲過程返回值
cmd.Parameters.Add(new SqlParameter("@d", SqlDbType.Int));
cmd.Parameters["@d"].Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
int iRet = (int)cmd.Parameters["@d"].Value;
b = (int)cmd.Parameters["@b"].Value;
c = cmd.Parameters["@c"].Value.ToString();
//返回值-1時失敗 0成功但記錄無效 1成功記錄有效
if (iRet == -1)
return false;
else
return true;
}
catch (Exception ex)
{
string e = ex.Message;
MessageBox.Show(ex.Message, "");
return false;
}
}
注意,其中把@b作為輸入輸出參數,並且一定要賦值,否則會出錯。其中的參數@d並沒有在存儲過程中定義,它表示存儲過程中return 語句返回的值。這堆程序開始要記的,對於記性差的人來說,很是郁悶,但寫多了,慢慢會記住,仔細看就行,不用刻意死記硬背。
另外,當調用出錯時,比如insert book_user(logname) values('aaa')這句出錯的話,存儲過程的 raiserror ('插入簽到記錄失敗',16,1) with seterror 這句會發生作用,'插入簽到記錄失敗'這句話會出現在ex.Message中。
2,在一個按鈕事件中編程如下
private void btnUse_Click(object sender, EventArgs e)
{
int a =8;
int b = 0;
string c = "";
this.ProcessMeetRec_SingleRec(a, ref b, ref c);
}
注意,因為@b是輸入輸出參數,@c是輸出參數,所以要使用ref。

❸ C# 調用sql存儲過程並顯示

/*
*
舉一個最簡單的例子
*
帶一個輸入參數
*
存儲過程如下:
*
create
procere
proc_select
*
@name
varchar(20)
*
as
*
begin
*
select
*
from
表名
where
name
like
'%'+@name+'%'
*
end
*/
using
(sqlconnection
conn
=
new
sqlconnection("連接字元串"))
{
conn.open();
sqlcommand
cmd
=
new
sqlcommand();
cmd.connection
=
conn;
cmd.commandtext
=
"存儲過程的名字";
cmd.commandtype
=
commandtype.storedprocere;
//表明你調用的sql語句是一個存儲過程
sqlparameter
parm_name
=
new
sqlparameter("@name",
"名字");
//@name必須和存儲過程中的參數的名字完全一樣
sqldataadapter
da
=
new
sqldataadapter(cmd);
dataset
ds
=
new
dataset();
da.fill(ds);
}

❹ c#中,怎樣用c#調用SQL server中的存儲過程

C#中使用SQL Server分布式管理對象

我們曾經在以前的應用中多次需要得到SQL Server的詳細信息,過去,我們必須使用API和效率低下的ADO的調用才能得到,現在,我們有了一個新的方法,就是SQLDMO(SQL Distributed Management Objects,SQL分布式管理對象),盡管它目前還不被人所知和使用,但是SQLDMO提供了許多強有力的、和利用代碼從SQL Server獲得信息相類似的許多功能,為舉例方便,這里僅向您解釋如何得到本地網路的SQL Server列表,如何去連接每個SQL Server,以及如何得到Server中的表、存儲過程和視圖的列表。

SQLDMO對象來自SQLDMO.dll,SQLDMO.dll是隨SQL Server2000一起發布的。SQLDMO.dll自身是一個COM對象,因此,在你的.NET項目里必須先引用它,VS.NET集成開發環境會創建所有必要的對COM的封裝。注意:如果你使用「using SQLDMO;」語句來引用的話,你將會得到一個錯誤信息。要讓它在你的應用程序里正常工作,你必須去引用它:

引用了COM對象之後,你就可以很容易地使用它了。
本例子中的所有操作都使用以下的一個或幾個對象:

SQLDMO.Application
SQLDMO.SQLServer
SQLDMO.Database
SQLDMO.NameList

象數據備份和恢復這樣的操作都有許多對象可以使用,但作為例子,我們會盡量簡單,使你輕松進入SQLDMO的世界來瀏覽一下它的方便性。
列出本地網路中可使用的SQL伺服器相對來說比較簡單,首先,你需要引用SQLDMO.Application對象,其次,你必須建立一個SQLDMO.Application.ListAvailableSQLServers()方法的返回值的實例SQLDMO.NameList,SQLDMO.NameList是伺服器名字的COM集合。
請記住:在你習慣了調用COM對象之前,調用COM對象總是令人感到可怕的,但習慣了就會好的。下面是一些示例代碼,它利用本地可使用的SQL伺服器的列表來填充下拉列表框。

//得到所有本地網路中可使用的SQL伺服器列表。
SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
SQLDMO.NameList sqlServers = sqlApp.ListAvailableSQLServers();
for(int i=0;i<sqlServers.Count;i++)
{
object srv = sqlServers.Item(i + 1);
if(srv != null)
{
this.cboServers.Items.Add(srv);
}
}
if(this.cboServers.Items.Count > 0)
this.cboServers.SelectedIndex = 0;
else
this.cboServers.Text = "<No available SQL Servers>";

正如前面所講的,是不是很簡單?請記住:COM集合的第一個項目是1,而不是0。
連接資料庫並得到所有資料庫的列表也是相當簡單的。下面的代碼採用上面下拉列表框所選擇的SQL伺服器,並連接該伺服器(使用文本框輸入的用戶名和密碼),生成該伺服器上資料庫列表的下拉列表框。

//得到指定SQL伺服器所有資料庫的列表
SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
SQLDMO.SQLServer srv = new SQLDMO.SQLServerClass();
srv.Connect(this.cboServers.SelectedItem.ToString(),this.txtUser.Text,this.txtPassword.Text);
foreach(SQLDMO.Database db in srv.Databases)
{
if(db.Name!=null)
this.cboDatabase.Items.Add(db.Name);
}

要得到該庫中對象的列表也是輕而易舉的事,再一次連接到資料庫,就可以遍歷出對象的集合。

//得到所有的存儲過程,所有的表放到Tables集合,所以的視圖放到Views集合
SQLDMO.SQLServer srv = new SQLDMO.SQLServerClass();
srv.Connect(this.cboServers.SelectedItem.ToString(),this.txtUser.Text,this.txtPassword.Text);
for(int i=0;i<srv.Databases.Count;i++)
{
if(srv.Databases.Item(i+1,"dbo").Name == this.cboDatabase.SelectedItem.ToString())
{
SQLDMO._Database db= srv.Databases.Item(i+1,"dbo");
this.lstObjects.Items.Clear();
for(int j=0;j<db.StoredProceres.Count;j++)
{
this.lstObjects.Items.Add(db.StoredProceres.Item(j+1,"dbo").Name);
}
break;
}
}

通過上面的例子,要得到SQL的信息是不是很方便呢

❺ 在asp.net(c#)中如何用sql語句調用伺服器端的存儲過程

如果已知了
伺服器端
有你需要的
存儲過程
,則第一步需要使你的程序和伺服器先建立起連接,連接成功之後可以寫一個
sql語句
:exec
存儲過程名(不帶參的存儲過程)就行了,當然這些可以在你的程序里寫也可以在你的程序里寫語句用來調用完成上述sql語句的存儲過程名即把上面的exec
存儲過程名
封裝在另一個存儲過程里,在程序里通過.net
里的
sqlcommand

sqlconnection
類來實現完成上面所述的語句

❻ 怎麼用vc調用SQL Server寫的存儲過程

HRESULT hr; ///設定一個句柄
_ConnectionPtr pConnection; ///一個連接指針
CString strSQLConnect = ((CManagerSys1App*)AfxGetApp())->m_strConnectMaster;
try
{
hr = pConnection.CreateInstance("ADODB.Connection");///創建Connection對象
if(SUCCEEDED(hr))
{
hr = pConnection->Open((_bstr_t)strSQLConnect,"","",adModeUnknown); ///連接數據
_variant_t RecordsAffected;
CString strDBName = ((CManagerSys1App*)AfxGetApp())->m_strDBName;
CString strKill;
strKill.Format("exec p_killspid '%s'",strDBName); //kill all connected link
pConnection->Execute((_bstr_t)strKill,&RecordsAffected,adCmdText);
CString strBackup;
strBackup.Format("restore database %s from disk='",strDBName); //restore
strBackup += "C:\\temp.bak";
strBackup += "' with replace";
pConnection->Execute((_bstr_t)strBackup,&RecordsAffected,adCmdText);
}
}
catch(_com_error e)///捕捉異常
{
CString errormessage;
errormessage.Format("全系統數據恢復失敗!\r\n錯誤信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///顯示錯誤信息
///關閉資料庫連接
if((pConnection != NULL))
{
if(pConnection->State)
pConnection->Close();
pConnection = NULL;
}
return;
}

❼ 求大神:C語言如何執行SQL sever的存儲過程

執行帶參數的存儲過程的方法如下:
Exec sp_configure 'allow updates',1 --允許更新系統表。
exec dbo.User_ChangeObjectOwnerBatch 'OldOwner','dbo'
以上是兩個例子。
SQL Server中執行帶參數的存儲過程的方法是:
EXEC 存儲過程名字 '參數1','參數2',數值參數
EXEC 是一個關鍵字。
字元串參數使用單引號括起來,數值參數不需要使用單引號

❽ c#如何調用 sql server 2005存儲過程

SqlConnection
con
=
new
SqlConnection("連接字元串");
SqlCommand
cmd
=
new
SqlCommand("SelectManStudent",
con);
SqlParameter
parm
=
new
SqlParameter("@Sex",
SqlDbType.NVarChar);
parm.Value
=
'男';//此處傳性別
cmd.Parameters.Add(parm);
cmd.CommandType
=
CommandType.StoredProcere;
con.Open();
SqlDataAdapter
sda
=
new
SqlDataAdapter(cmd);
DataSet
ds
=
new
DataSet();
sda.Fill(ds);
con.Close();
//ds就是查出來的
結果集

熱點內容
vb資料庫數組 發布:2024-11-19 09:23:40 瀏覽:827
安卓游戲數據保存在哪裡找 發布:2024-11-19 09:22:02 瀏覽:309
解壓出來的文件亂碼 發布:2024-11-19 09:15:40 瀏覽:939
北航ftp是多少 發布:2024-11-19 09:15:32 瀏覽:821
瀏覽保存密碼如何取消 發布:2024-11-19 09:10:17 瀏覽:89
安卓怎麼關簡訊重復提醒 發布:2024-11-19 09:02:00 瀏覽:635
html與php的區別 發布:2024-11-19 09:00:53 瀏覽:193
晚安密碼多少 發布:2024-11-19 09:00:51 瀏覽:945
易語言腳本模塊 發布:2024-11-19 09:00:44 瀏覽:484
經典矩陣C語言 發布:2024-11-19 08:56:23 瀏覽:268