注册 登录
编程论坛 SQL Server论坛

[求助]如何调用数据库中的代码

weihongkun 发布于 2007-01-26 15:42, 1289 次点击
我将一段程序写好后保存在数据库中
我现在想通过vs2005开发一个界面,在点击一个按纽后可以提取数据库中的代码并执行
我现在遇到的困难是我如何提取到数据库中的代码并让它执行
请大家赐教
8 回复
#2
Kendy1234562007-01-26 15:58
代码调用存储过程 用sqlDataAdapter,如果不返回结果集 使用ExecuteNonquery, 否则使用dataset的fill 方法
也可以使用SQLHelper的ExecuteDataTable,ExecuteNonQuery 方法
或者你可以先设计一个Dataset(XSD文件), 把存储过程放到TableAdapter中, 在代码中使用TableAdapter的fill方法

如果想看具体的代码 你应该贴到对应的开发语言版块

给你一个vb.net的例子:
Dim dt As DataTable,strsql as string
Try
Me.Cursor = Cursors.WaitCursor
strsql = "Exec pr_SearchUserByNo "+ UserNo.ToString
dt = SqlHelper.ExecuteDataTable(My.Settings.MyConnectionString, CommandType.Text, strsql) ---存储过程返回的结果放到表dt中

Dim ArrayPara(2) As System.Data.SqlClient.SqlParameter
ArrayPara(0) = New System.Data.SqlClient.SqlParameter("@xGroupCode", SqlDbType.Int)
ArrarPara(1) = New System.Data.SqlClient.SqlParameter("@xRecordType", SqlDbType.VarChar, 10)
ArrayPara(0).Value = 10
ArrayPara(1).Value = "Checked"

strsql = "Exec Pr_Delete_Duplicate_Records"
SqlHelper.ExecuteNonQuery(My.Settings.MyConnectionString, Data.CommandType.StoredProcedure, 0, strSql, ArrayPara)
Catch ex As Exception
Msgbox(ex.tostring)
Finally
Me.Cursor = Cursors.Default
End Try




[此贴子已经被作者于2007-1-26 16:13:54编辑过]

#3
bygg2007-01-26 20:25
把程序代码保存到数据库中???
#4
Kendy1234562007-01-27 11:59

晕 我理解错了

楼主的思路似乎很...奇特... 没编译过的代码保存在数据库中有什么用?
如果是编译过的...不就是个exe吗? 那还放到数据库里面干嘛...

#5
weihongkun2007-01-27 16:51

放在数据库里有很大的用途的,比如用户可以自己新增加一段代码,然后保存成一个方案,下次就可以直接调用这个方案了
实现更大的灵活性

#6
weihongkun2007-01-27 16:54
以下是引用Kendy123456在2007-1-26 15:58:00的发言:
代码调用存储过程 用sqlDataAdapter,如果不返回结果集 使用ExecuteNonquery, 否则使用dataset的fill 方法
也可以使用SQLHelper的ExecuteDataTable,ExecuteNonQuery 方法
或者你可以先设计一个Dataset(XSD文件), 把存储过程放到TableAdapter中, 在代码中使用TableAdapter的fill方法

如果想看具体的代码 你应该贴到对应的开发语言版块

给你一个vb.net的例子:
Dim dt As DataTable,strsql as string
Try
Me.Cursor = Cursors.WaitCursor
strsql = "Exec pr_SearchUserByNo "+ UserNo.ToString
dt = SqlHelper.ExecuteDataTable(My.Settings.MyConnectionString, CommandType.Text, strsql) ---存储过程返回的结果放到表dt中

Dim ArrayPara(2) As System.Data.SqlClient.SqlParameter
ArrayPara(0) = New System.Data.SqlClient.SqlParameter("@xGroupCode", SqlDbType.Int)
ArrarPara(1) = New System.Data.SqlClient.SqlParameter("@xRecordType", SqlDbType.VarChar, 10)
ArrayPara(0).Value = 10
ArrayPara(1).Value = "Checked"

strsql = "Exec Pr_Delete_Duplicate_Records"
SqlHelper.ExecuteNonQuery(My.Settings.MyConnectionString, Data.CommandType.StoredProcedure, 0, strSql, ArrayPara)
Catch ex As Exception
Msgbox(ex.tostring)
Finally
Me.Cursor = Cursors.Default
End Try





我不想用存储过程,我需要做到点新增按纽后写入代码,然后保存代码为a,下次直接执行a就行了,也就是需要调用数据库中的代码并运行

#7
bygg2007-01-27 20:18
以下是引用weihongkun在2007-1-27 16:51:00的发言:

放在数据库里有很大的用途的,比如用户可以自己新增加一段代码,然后保存成一个方案,下次就可以直接调用这个方案了
实现更大的灵活性

这样不好吧??
要是用户添加一段恶意代码呢??
保存方案一般都是保存重要的属性,并在允许的情况下..

#8
Kendy1234562007-01-29 10:48

如果一定要这样 你只能保证你存取的代码是SQL代码而不是任何开发语言的代码

用个varchar类型的字段 把用户保存的sql语句放进去

运行的时候用 EXEC(@SqlString)的形式执行

你在前台保存之前要进行语法校验.

#9
cyyu_ryh2007-01-29 13:11
头冒金花
1