信息发布软件,b2b软件,广告发布软件

标题: VB.net中怎么访问存储过程和实例教程 [打印本页]

作者: 信息发布软件    时间: 2017-2-26 17:27
标题: VB.net中怎么访问存储过程和实例教程
VB.net中怎么访问存储过程和实例教程


  1.  使用SQL存储过程有什么好处
  2.   ■SQL存储过程执行起来比SQL命令文本快得多。当一个SQL语句包含在存储过程中时,服务器不必每次执行它时都要分析和编译它。
  3.   ■调用存储过程,可以认为是一个三层结构。这使你的程序易于维护。如果程序需要做某些改动,你只要改动存储过程即可
  4.   ■你可以在存储过程中利用Transact-SQL的强大功能。一个SQL存储过程可以包含多个SQL语句。你可以使用变量和条件。这意味着你可以用存储过程建立非常复杂的查询,以非常复杂的方式更新数据库。
  5.   ■最后,这也许是最重要的,在存储过程中可以使用参数。你可以传送和返回参数。你还可以得到一个返回值(从SQL RETURN语句)。
  6.   环境:WinXP+VB6+sp6+SqlServer2000
  7.   数据库:test
  8.   表:Users
  9.   CREATE TABLE [dbo].[users] (
  10.   [id] [int] IDENTITY (1, 1) NOT NULL ,
  11.   [truename] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
  12.   [regname] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
  13.   [pwd] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
  14.   [sex] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
  15.   [email] [text] COLLATE Chinese_PRC_CI_AS NULL ,
  16.   [jifen] [decimal](18, 2) NULL
  17.   ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  18.   GO
  19.   ALTER TABLE [dbo].[users] WITH NOCHECK ADD
  20.   CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED
  21.   (
  22.   [id]  ) ON [PRIMARY]
  23.   GO
  24.   存储过程select_users
  25.   CREATE PROCEDURE select_users @regname char(20), @numrows int OUTPUT
  26.   AS
  27.   Select * from users
  28.   SELECT @numrows = @@ROWCOUNT
  29.   if @numrows = 0
  30.   return 0
  31.   else return 1
  32.   GO
  33.   存储过程insert_users
  34.   CREATE PROCEDURE insert_users @truename char(20), @regname char(20),@pwd char(20),@sex char(20),@email char(20),@jifen decimal(19,2)
  35.   AS
  36.   insert into users(truename,regname,pwd,sex,email,jifen) values(@truename,@regname,@pwd,@sex,@email,@jifen)
  37.   GO
  38.   在VB环境中,添加DataGrid控件,4个按钮,6个文本框
  39.   代码简单易懂。
  40.   ‘引用microsoft active data object 2.X library
  41.   Option Explicit
  42.   Dim mConn As ADODB.Connection
  43.   Dim rs1 As ADODB.Recordset
  44.   Dim rs2 As ADODB.Recordset
  45.   Dim rs3 As ADODB.Recordset Dim rs4 As ADODB.Recordset
  46.   Dim cmd As ADODB.Command
  47.   Dim param As ADODB.Parameter
  48.   '这里用第一种方法使用存储过程添加数据
  49.   Private Sub Command1_Click()
  50.   Set cmd = New ADODB.Command
  51.   Set rs1 = New ADODB.Recordset
  52.   cmd.ActiveConnection = mConn
  53.   cmd.CommandText = "insert_users"
  54.   cmd.CommandType = adCmdStoredProc
  55.   Set param = cmd.CreateParameter("truename", adChar, adParamInput, 20, Trim(txttruename.Text))
  56.   cmd.Parameters.Append param
  57.   Set param = cmd.CreateParameter("regname", adChar, adParamInput, 20, Trim(txtregname.Text))
  58.   cmd.Parameters.Append param
  59.   Set param = cmd.CreateParameter("pwd", adChar, adParamInput, 20, Trim(txtpwd.Text))
  60.   cmd.Parameters.Append param
  61.   Set param = cmd.CreateParameter("sex", adChar, adParamInput, 20, Trim(txtsex.Text))
  62.   cmd.Parameters.Append param
  63.   Set param = cmd.CreateParameter("email", adChar, adParamInput, 20, Trim(txtemail.Text))
  64.   cmd.Parameters.Append param
  65.   ‘下面的类型需要注意,如果不使用adSingle,会发生一个精度无效的错误
  66.   Set param = cmd.CreateParameter("jifen", adSingle, adParamInput, 50, Val(txtjifen.Text))
  67.   cmd.Parameters.Append param
  68.   Set rs1 = cmd.Execute
  69.   Set cmd = Nothing
  70.   Set rs1 = Nothing
  71.   End Sub
  72.   这里用第二种方法使用存储过程添加数据
  73.   Private Sub Command2_Click()
  74.   Set rs2 = New ADODB.Recordset
  75.   Set cmd = New ADODB.Command
  76.   cmd.ActiveConnection = mConn
  77.   cmd.CommandText = "insert_users"
  78.   cmd.CommandType = adCmdStoredProc
  79.   cmd.Parameters("@truename") = Trim(txttruename.Text)
  80.   cmd.Parameters("@regname") = Trim(txtregname.Text)
  81.   cmd.Parameters("@pwd") = Trim(txtpwd.Text)
  82.   cmd.Parameters("@sex") = Trim(txtsex.Text)
  83.   cmd.Parameters("@email") = Trim(txtemail.Text)
  84.   cmd.Parameters("@jifen") = Val(txtjifen.Text)
  85.   Set rs2 = cmd.Execute
  86.   Set cmd = Nothing
  87.   Set rs1 = Nothing
  88.   End Sub
  89.   '这里用第三种方法使用连接对象来插入数据
  90.   Private Sub Command4_Click()
  91.   Dim strsql As String
  92.   strsql = "insert_users '" amp; Trim(txttruename.Text) amp; "','" amp; Trim(txtregname.Text) amp; "','" amp; Trim(txtpwd.Text) amp; "','" amp; Trim(txtsex.Text) amp; "','" amp; Trim(txtemail.Text) amp; "','" amp; Val(txtjifen.Text) amp; "'"
  93.   Set rs3 = New ADODB.Recordset Set rs3 = mConn.Execute(strsql)
  94.   Set rs3 = Nothing
  95.   End Sub
  96.   '利用存储过程显示数据
  97.   ‘要处理多种参数,输入参数,输出参数以及一个直接返回值
  98.   Private Sub Command3_Click()
  99.   Set rs4 = New ADODB.Recordset
  100.   Set cmd = New ADODB.Command
  101.   cmd.ActiveConnection = mConn
  102.   cmd.CommandText = "select_users"
  103.   cmd.CommandType = adCmdStoredProc
  104.   '返回值
  105.   Set param = cmd.CreateParameter("RetVal", adInteger, adParamReturnValue, 4)
  106.   cmd.Parameters.Append param
  107.   '输入参数
  108.   Set param = cmd.CreateParameter("regname", adChar, adParamInput, 20, Trim(txtregname.Text))
  109.   cmd.Parameters.Append param
  110.   '输出参数
  111.   Set param = cmd.CreateParameter("numrows", adInteger, adParamOutput)
  112.   cmd.Parameters.Append param
  113.   Set rs4 = cmd.Execute()
  114.   If cmd.Parameters("RetVal")。Value = 1 Then
  115.   MsgBox cmd.Parameters("numrows")。Value
  116.   Else
  117.   MsgBox "没有记录"
  118.   End If
  119.   MsgBox rs4.RecordCount
  120.   Set DataGrid1.DataSource = rs4
  121.   DataGrid1.Refresh
  122.   End Sub
  123.   '连接数据库
  124.   Private Sub Form_Load()
  125.   Set mConn = New Connection
  126.   mConn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Test;Data Source=yang"
  127.   mConn.CursorLocation = adUseClient '设置为客户端
  128.   mConn.Open
  129.   End Sub
  130.   '关闭数据连接
  131.   Private Sub Form_Unload(Cancel As Integer)
  132.   mConn.Close
  133.   Set mConn = Nothing
  134.   End Sub
复制代码



作者: 信息发布软件    时间: 2017-2-26 17:29
  1. 此页涉及到的存储过程的创建,在存储过程的创建中有源码

  2. 1、调用无参数存储过程

  3.         dim conn As New SqlConnection

  4.         dim FBasicDataRecord as new BasicDataRecord()

  5.         conn.ConnectionString = "Data Source=(local);Initial Catalog=LineManager;User ID=sa;Password=1"
  6.         conn.Open()

  7.         Dim cmd As SqlCommand
  8.         cmd = New SqlCommand("GetNewestData", conn)              -------要调用存储过程名称
  9.         cmd.CommandType = CommandType.StoredProcedure                         -----------关键,要想调用存储过程,需将

  10.                                                                                                                       commandtype类型设置为storedprocedure
  11.         Dim myReader As SqlDataReader
  12.         Try

  13.             myReader = cmd.ExecuteReader()       -------------执行存储过程
  14.             If myReader.Read() Then

  15.                 FBasicDataRecord.mySetDateTime = myReader.GetDateTime(0)
  16.                 FBasicDataRecord.myHalfHourCost = myReader.GetDecimal(1)
  17.                 FBasicDataRecord.myUnitTime = myReader.GetInt32(2)
  18.                 FBasicDataRecord.myPrepareTime = myReader.GetInt32(3)
  19.                 FBasicDataRecord.myLeastCurrency = myReader.GetDecimal(4)
  20.                 FBasicDataRecord.myUserName = myReader.GetString(5)
  21.                 Return True
  22.             Else
  23.                 Return False
  24.             End If
  25.         Catch ex As Exception
  26.             Return ex.Message

  27.         Finally
  28.             conn.close()

  29.         End Try

  30. 2、调用有参数存储过程

  31.         Dim cmd As SqlCommand

  32.         dim conn As New SqlConnection

  33.         conn.ConnectionString = "Data Source=(local);Initial Catalog=LineManager;User ID=sa;Password=1"
  34.         conn.Open()


  35.         cmd = New SqlCommand("ProcCharge", conn)          --------存储过程名称
  36.         cmd.CommandType = CommandType.StoredProcedure         ----------改变类型
  37.         Dim a As New SqlParameter("@CardNo", SqlDbType.VarChar)     ------------将存储过程中涉及的参数加入进来,并附

  38.                                                                                                                 值。就像给函数的各个参数赋值一样
  39.         a.Value = myCharge.myCardNo
  40.         cmd.Parameters.Add(a)
  41.         Dim b As New SqlParameter("@ChargeDateTime", SqlDbType.DateTime)
  42.         b.Value = myCharge.myChargeDateTime
  43.         cmd.Parameters.Add(b)
  44.         Dim c As New SqlParameter("@Charge", SqlDbType.Int)
  45.         c.Value = myCharge.myCharge
  46.         cmd.Parameters.Add(c)
  47.         Dim d As New SqlParameter("@UserName", SqlDbType.VarChar)
  48.         d.Value = myCharge.myUserName
  49.         cmd.Parameters.Add(d)
  50.         Dim e As New SqlParameter("@LastBalance", SqlDbType.Float)
  51.         e.Value = myCharge.myLeastBalance
  52.         cmd.Parameters.Add(e)
  53.         Dim f As New SqlParameter("@CurrentBalance", SqlDbType.Decimal)
  54.         f.Value = myCharge.myCurrentBalance
  55.         cmd.Parameters.Add(f)                                 ----------------参数块

  56.         Try
  57.             Return cmd.ExecuteNonQuery() > 0                         ------------------执行存储过程。当存储过程涉及到的是插入删除或

  58.                                                                        更新操作时,用executenonquery(),而如果是查询,则用executereader()
  59.         Catch ex As Exception
  60.             MsgBox(ex.Message)
  61.             Return False
  62.         Finally
  63.             conn.Close()
  64.         End Try

  65. 3、调用有返回值的存储过程

  66.         dim conn As New SqlConnection

  67.         conn.ConnectionString = "Data Source=(local);Initial Catalog=LineManager;User ID=sa;Password=1"
  68.         conn.Open()

  69.         Dim cmd As SqlCommand
  70.         cmd = New SqlCommand("procBalanceUserName", myConn.myConn)         ---------存储过程名称
  71.         cmd.CommandType = CommandType.StoredProcedure                         ----------改变类型
  72.         cmd.Parameters.Add(New SqlParameter("@CardNo", SqlDbType.VarChar))     -------添加参数,此为输入参数

  73.         cmd.Parameters("@CardNo").Value = CardNo
  74.         cmd.Parameters.Add(New SqlParameter("@MachineNo", SqlDbType.VarChar))
  75.         cmd.Parameters("@MachineNo").Value = MachineNo
  76.         cmd.Parameters.Add(New SqlParameter("@Balance", SqlDbType.Float, 20))          ---------定义输出参数
  77.         cmd.Parameters("@Balance").Direction = ParameterDirection.Output            -------输出参数用此标识
  78.         '输出参数必须有指定长度,否则不会成功。
  79.         cmd.Parameters.Add(New SqlParameter("@UserName", SqlDbType.VarChar, 10))        -------输出参数必须是名字,类

  80.                                                                                                                                    型,长度。不可省略。否则,会出错误。
  81.         cmd.Parameters("@UserName").Direction = ParameterDirection.Output
  82.         Try
  83.             cmd.ExecuteReader()                                          ---------------执行存储过程
  84.             myBalance = cmd.Parameters("@Balance").Value.ToString()          ----------将存储过程的返回值赋给定义的变量
  85.             myUserName = cmd.Parameters("@UserName").Value.ToString()

  86.         Catch ex As Exception
  87.             MsgBox(ex.Message)
  88.         Finally
  89.             Conn.Close()
  90.         End Try

  91. 总结一下,调用存储过程,首先,实例化sqlcommand,然后修改commandtype类型,如果参数,则给参数赋值或定义输出参数。然后执行。
复制代码

实例教程2


作者: 信息发布软件    时间: 2017-2-26 17:30
实例教程3


  1. 首先,在SqlServer中创建存储过程,在调用时分为有参数和没有参数两种情况,
  2.   先就简单的没有参数的情况简要的介绍:


  3.   假设存储过程如下:   CREATE PROC SelectAll



  4.       AS

  5.   SELECT * FROM StudentInf


  6.   则此sp的调用如下:

  7. SqlCommand selectCMD = new SqlCommand(“SelectAll”, conn);

  8.   //conn 为SqlConnection

  9.   selectCMD.CommandType = CommandType.StoredProcedure;


  10.   如果需要将结果集加到某个DataAdapter上,则可如下:

  11. SqlDataAdapter stuDA = new SqlDataAdapter();

  12.   stuDa.SelectCommand = selectCMD;

  13.   如果有参数:create proc andSelect

  14. @StudentId varchar(10),

  15.   @StudentName varchar(10),

  16.   As

  17.   Select * from StudentInf where StudentId = @StudentId and StudentName = @StudentName


  18.   则参数可以如下添加:

  19.  selectCMD.Parameters.Add(“@StudentId”, SqlDbType.NVarChar, 10);

  20.   selectCMD.Parameters.Add(“@StudentName”, SqlDbType.NvarChar, 10);


  21.   如果只有一个参数,也可以这样赋值:

  22.  SqlParameters onePara = selectCMD.Parameters.Add(“@StudentId”,                                         SqlDbType.NVarChar, 10);


  23.   onePara.Value = “ a string ”
复制代码



作者: huangge    时间: 2017-2-27 00:49
精湛!没到一分钟就把我这问题解决了!我自己研究了大半天都没弄懂!不错!
作者: beiao    时间: 2017-2-28 17:51
,服务热情,完美解决了问题,非常感谢~
作者: 小痞子    时间: 2017-3-1 10:40
,很有耐心讲解
作者: lnzhanghao    时间: 2017-3-1 10:43
谢卖家,以后朋友需要会介绍来亲店里的!赞!
作者: meng00123    时间: 2017-3-2 20:31
了,和卖家描述的一样,操作简单,很实用很方便,店家的服务热情、周到、细心很满意的一次网购
作者: feiyang2006    时间: 2017-3-3 03:16
错满意吧下次需要还会来
作者: 万能群发    时间: 2017-3-3 03:39
位,修改的速度很快。
作者: yerface    时间: 2017-3-3 06:24
家服务质量真心没说的,即使我是小白,卖家也做到了绝对的认真不糊弄!
作者: meilifc001    时间: 2017-3-3 14:09
好,功能也很强大,平台已经弄完,不过最近事太忙,还没事时间完善内容,整理好后补发图片.
作者: a001hao    时间: 2017-3-3 20:12
质量不错与店家的描述一样好评
作者: xiaozhu168    时间: 2017-3-5 21:37
信誉,约定的都做到了,好评
作者: 紫逸风    时间: 2017-3-9 04:40
和5号笨蛋服务不错,好评!!
作者: 紫逸风    时间: 2017-3-9 15:17
好想请您吃一餐饭哦。
作者: kevin3898    时间: 2017-3-13 09:44
又快专业就是不一样
作者: 脱颖而出    时间: 2017-3-13 22:26
致,帮忙开通公众号遇到了一些小问题,还不时提醒,开通后两天就建好了,高效!
作者: lalajie    时间: 2017-3-14 02:28
.耐心。负责
作者: xubaojin    时间: 2017-3-16 05:16
错服务也好尤其是模版老师我是必须得夸一夸了服务态度都是10颗星一开始我不太懂那个模版怎么安装把我给急的都快撞电脑了是模版老师不厌其烦一步一步指导的现在我的店铺好漂亮啊真心感谢店家和模版老师哦!
作者: daoke    时间: 2017-3-17 23:02
很好独特运行速度也很快卖家很专业
作者: ebxly    时间: 2017-3-17 23:39
推荐!
作者: jiandao1    时间: 2017-3-17 23:43
太久1个半月了,2个客服小哥人都不错,态度也很好应该给好评,只是设计网页的设计感太一般,应该中评。
作者: brt02    时间: 2017-3-19 00:44
么懂就来这里,客服技术好热诚
作者: xiaoyaoyao001    时间: 2017-3-19 13:15
根本不按我的意思来修改了一遍又一遍
作者: huanyili998    时间: 2017-3-20 01:34
心,一直回答我。我自己一直弄不懂他很耐心。
作者: 万能群发    时间: 2017-3-22 01:10
业,好评!!!!非常值得信任!!
作者: dccmdy    时间: 2017-3-22 11:34
好,物流快
作者: 西充    时间: 2017-3-22 11:50
相当好的卖家!
作者: pwl2015    时间: 2017-3-22 13:07
,非常迅速!
作者: xiaoyaoyao001    时间: 2017-3-22 14:54
按照我的意思做的,中间改了几次,最后很满意,店家费心了,下次再来
作者: huaxue98    时间: 2017-3-23 02:50
,做的真棒,而且服务质量真是棒棒哒,没得说,好评,做的页面首页简单大气上档次,认真负责,而且美工很好,做
作者: 小痞子    时间: 2017-3-23 15:12
服务好值得信赖!
作者: feiyang2006    时间: 2017-3-23 18:51
,值得长期合作
作者: beiao    时间: 2017-3-23 19:55
的很好客服很有耐心非常满意
作者: bysqb    时间: 2017-3-23 21:23
有创意了,设计出来的样式很符合我们想要的风格,画面精美,做出来的效果不错,谢谢店家的耐心服务,很满意。
作者: 我爱苏苏    时间: 2017-3-23 21:59
力,好评
作者: c19900420    时间: 2017-3-25 07:03
小卖家,虽然店铺很难看,但是还是害怕装修会不会没有效果,客服台热情了!就做了一个,付款了后其实蛮忐忑的,结
作者: yangjiang1    时间: 2017-3-25 16:36
和5号笨蛋好评
作者: weipinzongmeng    时间: 2017-3-25 22:18
了,每次服务都超赞的,这次62号小笨蛋的服务很是周到,虽只是个小女孩,资质不深,但很爱岗敬业,值得表扬,大家以后有需要也多支持下62号
作者: huaxue98    时间: 2017-3-28 08:09
度都不错
作者: feiyang2006    时间: 2017-3-28 12:03
的很好客服很有耐心非常满意




欢迎光临 信息发布软件,b2b软件,广告发布软件 (http://postbbs.com/) Powered by Discuz! X3.2