软件的二次开发技术(执行代码从数据库中读取)

chhming 2010-05-26 11:01:19
如上题:
本人想,如果做一个程序,写的代码都保存在数据库中。
当程序运行时代码才从数据库中加载。
举例:如
dim i as integer
for i=0 to 10
i+=1
next i

这段代码是保存在数据库中的,要怎么样才能在程序运行时才执行呢。
各位有没有做过这方面的。
...全文
214 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
chhming 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 pjw100 的回复:]
你的意思是通过代码来编译代码,然后再执行编译好的代码?
我想问这样做的目的是什么?它的意义在哪个地方?能够用在什么场景?
[/Quote]

这样做的好处就是:用来做软件的二次开发。
打个比方:
例如你做好了一个软件,你如果要加一个新窗体,或者在窗体上新加一个按钮,按钮里又要写入一些功能代码。如果没有二次开发,或者动态编译的话,你得去改源代码。
这样的话,对于软件的维护是很麻烦的。
如果有二次开发功能的话,那么像上面的要求,你只要把代码保存进数据库,然后动态调出来,再执行你的代码。这样就避免了每次有新东西加入软件都要去改源代码的问题。
这样做的话,软件运行的速度比较慢点。但是易于维护。

proer9988 2010-06-11
  • 打赏
  • 举报
回复
二次开发一般是用插件的方式,效率高,安全,保密。
Kation 2010-06-11
  • 打赏
  • 举报
回复
顶一个!
想飞的狼 2010-06-11
  • 打赏
  • 举报
回复
关注回复内容太短了!
pjw100 2010-06-08
  • 打赏
  • 举报
回复
你的意思是通过代码来编译代码,然后再执行编译好的代码?
我想问这样做的目的是什么?它的意义在哪个地方?能够用在什么场景?
chhming 2010-06-07
  • 打赏
  • 举报
回复
有人还有好的方法么。
lqw521326 2010-06-03
  • 打赏
  • 举报
回复
牛人啊
chhming 2010-06-02
  • 打赏
  • 举报
回复
最简单的方法。上面打错字了,呵呵
chhming 2010-06-02
  • 打赏
  • 举报
回复
上面的就是我找到的最得意的方法了。但是这样有些不方便,因为它只能调用写好的代码,不能全局调用。
有没有高手会的。
chhming 2010-06-02
  • 打赏
  • 举报
回复
新建一个类
Imports System.CodeDom
Imports System.CodeDom.Compiler
Imports System.Reflection

Public Class DynamicCompile
Public Sub CompileVB(ByVal Code As String)
Dim myProvider As New Microsoft.VisualBasic.VBCodeProvider
Dim Compailer As ICodeCompiler = myProvider.CreateCompiler
Dim CompailerParamentes As New CompilerParameters
Dim myAssembly As [Assembly]
Dim mySub As System.Reflection.MethodInfo
Dim MyClass1 As System.Type
With CompailerParamentes
.ReferencedAssemblies.Add("C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Microsoft.VisualBasic.dll")
.ReferencedAssemblies.Add("C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\mscorlib.dll")
'.OutputAssembly = "temp.dll"
.GenerateInMemory = True
End With

myAssembly = Compailer.CompileAssemblyFromSource(CompailerParamentes, Code).CompiledAssembly
MyClass1 = myAssembly.GetType("Hello")

mySub = MyClass1.GetMethod("SayHello")
mySub.Invoke(MyClass1, Nothing)
End Sub
End Class

然后在窗体上
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myDC As New DynamicCompile
myDC.CompileVB(TextBox1.Text)

End Sub

注意textbox1中的内容就是你要动态执行的代码,但是一定要写对,因为这个不会自动检测语法。

qq234121906 2010-05-29
  • 打赏
  • 举报
回复
可以贴出来让大家学习一下。
chhming 2010-05-29
  • 打赏
  • 举报
回复
已经找到一种方法,很简单,但是第一次执行时的速度不怎么快。
水猿兵团五哥 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dylike 的回复:]
msscript.ocx
[/Quote]
DJ降临?呵呵,难得
dylike 2010-05-27
  • 打赏
  • 举报
回复
msscript.ocx
Forrest23 2010-05-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 caozhy 的回复:]
http://www.tech-q.cn/thread-6436-1-1.html
VB的类似。
但是要考虑安全问题。
[/Quote]

还可以这样 学习了
  • 打赏
  • 举报
回复
的确是可以这样,我用的软件的就是这种方式。
但就是不知道是怎么开发出来的
liliyuaaa 2010-05-26
  • 打赏
  • 举报
回复
还能这样啊?。net不是需要预编译吗?运行时调用CSC.exe吗?
留个印,学习下
言士心 2010-05-26
  • 打赏
  • 举报
回复
学习,留个印!
threenewbee 2010-05-26
  • 打赏
  • 举报
回复
http://www.tech-q.cn/thread-6436-1-1.html
VB的类似。
但是要考虑安全问题。

16,552

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧