注册 登录
编程论坛 VB.NET论坛

不知道错误在哪儿?“不说也罢”请帮忙

smy727 发布于 2013-03-22 15:28, 1495 次点击
错误出现在保存数据库时出现,不知道错在哪里?

Imports System.Data
Imports System.Data.OleDb

Public Class Form1
    Dim objconnection As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\规管数据库\shujuku.accdb")
    Dim objdataadapter As New OleDbDataAdapter("SELECT  * FROM biao ORDER BY 序号", objconnection)
    Dim objdataview As DataView
    Dim objdataset As DataSet
    Dim objcurrencymanager As CurrencyManager
end sub

    Private Sub filldatasetandview()
        objdataset = New DataSet
        objdataadapter.Fill(objdataset, "biao")
        objdataview = New DataView(objdataset.Tables("biao"))
        objcurrencymanager = CType(Me.BindingContext(objdataview), CurrencyManager)
    End Sub

 Private Sub mydtgr()                                         '绑定datagridview
        grdauthortitles.AutoGenerateColumns = True
        grdauthortitles.DataSource = objdataview
        Dim objalternatingcellstyle As New DataGridViewCellStyle
        objalternatingcellstyle.BackColor = Color.WhiteSmoke
        grdauthortitles.AlternatingRowsDefaultCellStyle = objalternatingcellstyle


 Private Sub wbkbangding()                                           '绑定文本框
       TextBox47.DataBindings.Add("text", objdataview, "序号")     
        TextBox52.DataBindings.Add("text", objdataview, "备份备注")
        TextBox54.DataBindings.Add("text", objdataview, "批准项目机构")
        TextBox53.DataBindings.Add("text", objdataview, "日期")
        TextBox56.DataBindings.Add("text", objdataview, "X用地规模")
        TextBox55.DataBindings.Add("text", objdataview, "J道路红线")
        TextBox57.DataBindings.Add("text", objdataview, "D该用地")
        建设单位TextBox1.DataBindings.Add("text", objdataview, "建设单位")

....全部列

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click           'datagridview添加新行
        objdataview.AddNew()
        objcurrencymanager.Position = objcurrencymanager.Count - 1
        showposition()
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click    ’保存数据库
        Dim objcommand As New OleDbCommand
        Dim intposition As Integer
        intposition = objcurrencymanager.Position
        objcommand.Connection = objconnection
         = "update biao " & _
"set D该用地=TextBox57,X用地规模=TextBox56,J道路红线=TextBox55,批准项目机构=TextBox54, .....全部列 where 序号=TextBox47"

         = CommandType.Text

        objcommand.Parameters.AddWithValue("D该用地", TextBox57.Text)
        objcommand.Parameters.AddWithValue("X用地规模", TextBox56.Text)
        objcommand.Parameters.AddWithValue("J道路红线", TextBox55.Text)
        objcommand.Parameters.AddWithValue("批准项目机构", TextBox54.Text)
        objcommand.Parameters.AddWithValue("日期", TextBox53.Text)
        objcommand.Parameters.AddWithValue("序号", TextBox47.Text)
        objcommand.Parameters.AddWithValue("建设单位", 建设单位TextBox1.Text)
        objcommand.Parameters.AddWithValue("X项目名称", X项目名称TextBox.Text)
        objcommand.Parameters.AddWithValue("X建设项目依据", X建设项目依据TextBox.Text)
        objcommand.Parameters.AddWithValue("X附图名称", X附图名称TextBox.Text)
 .....全部列
  
        objconnection.Open()
        objcommand.ExecuteNonQuery()
        objconnection.Close()
        filldatasetandview()
        binddfields()
        objcurrencymanager.Position = intposition
        wbkguan()
    End Sub
18 回复
#2
smy7272013-03-22 15:47
愿意帮忙的朋友请详细点,因为我是个初学者,自学的
#3
不说也罢2013-03-22 17:06
错误列表给的提示呢?还有,是在哪一行出问题的?
#4
不说也罢2013-03-22 17:07
你贴的代码中的第九行“end sub”啥回事哦?
#5
smy7272013-03-22 17:14
没有错误提示,就是存不到数据库。第九行是个查询。
#6
不说也罢2013-03-22 17:26
你这代码贴的
第九行:end sub   还有下面行的“....全部列”,这都是啥哦
从你的不能保存到数据库看,问题出在Button6_Click这个模块中
= "update biao " & _。。。。。。。。。。这句,你用了SQL更新查询语句,那 = CommandType.Text
而从下面行的代码看,你又调用了带参数的存储过程语法,这 = CommandType.StoredProcedure
所以无法更新数据库。
你用下面的代码替换下Button6_Click看看
   
程序代码:
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click    '保存数据库
        Dim objcommand As New OleDbCommand
        Dim intposition As Integer
        intposition = objcurrencymanager.Position
        objcommand.Connection = objconnection

         = CommandType.StoredProcedure
        objcommand.Parameters.AddWithValue("D该用地", TextBox57.Text)
        objcommand.Parameters.AddWithValue("X用地规模", TextBox56.Text)
        objcommand.Parameters.AddWithValue("J道路红线", TextBox55.Text)
        objcommand.Parameters.AddWithValue("批准项目机构", TextBox54.Text)
        objcommand.Parameters.AddWithValue("日期", TextBox53.Text)
        objcommand.Parameters.AddWithValue("序号", TextBox47.Text)
        objcommand.Parameters.AddWithValue("建设单位", 建设单位TextBox1.Text)
        objcommand.Parameters.AddWithValue("X项目名称", X项目名称TextBox.Text)
        objcommand.Parameters.AddWithValue("X建设项目依据", X建设项目依据TextBox.Text)
        objcommand.Parameters.AddWithValue("X附图名称", X附图名称TextBox.Text)


        objconnection.Open()
        objcommand.ExecuteNonQuery()
        objconnection.Close()
        filldatasetandview()
        binddfields()
        objcurrencymanager.Position = intposition
        wbkguan()
    End Sub
#7
smy7272013-03-22 17:43
该了以后这行出现错误,“没有为命令对象设置命令”
objcommand.ExecuteNonQuery()
#8
不说也罢2013-03-22 17:47
哦,丢了一句
= CommandType.StoredProcedure这句下面加上一行:
你的存储过程名称"
#9
smy7272013-03-22 18:01
我的存储过程名称是什么?
#10
smy7272013-03-22 18:02
能不能Q聊?
#11
smy7272013-03-22 18:18
数据库列很多,我没全写,所以用了....全部列
#12
不说也罢2013-03-22 18:27
以下是引用smy727在2013-3-22 18:01:35的发言:

我的存储过程名称是什么?
哦哟,这个这个。。。。。
#13
不说也罢2013-03-22 18:29
以下是引用smy727在2013-3-22 18:18:31的发言:

数据库列很多,我没全写,所以用了....全部列
刚学,用最省的列吧,三列,一列INT,一列TEXT,一列DATE
#14
smy7272013-03-22 18:35
能不能给个例子?这一列INT,一列TEXT,一列DATE怎么写?我是看书学的所以有点难
#15
smy7272013-03-22 22:06
我可真搞不懂,哎.........
#16
smy7272013-03-24 23:39
帮就帮到底嘛,我真不懂,自学全靠书,写个简单例子不就行了
#17
不说也罢2013-03-25 12:19
以下是引用smy727在2013-3-24 23:39:04的发言:

帮就帮到底嘛,我真不懂,自学全靠书,写个简单例子不就行了


写个例子简单啊,你贴的代码也是例子哦。



程序代码:
Imports System.Data.SqlClient
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Conn As New SqlConnection("server=(local);database=你的数据库名称;uid=sa;pwd=你登录SQLSERVER的密码")
        Dim sqlCommand As SqlCommand = New SqlCommand("这是你的存储过程的名称", Conn)
         = CommandType.StoredProcedure '使用存储过程,而非SQL查询语句
        Try
            Conn.Open()
            With sqlCommand.Parameters '为存储过程中的参数赋值
                .Add("@UserName", SqlDbType.NVarChar, 50).Value = TextBox1.Text
                .Add("@PhoneNumber", SqlDbType.Int, 4).Value = TextBox2.Text
                .Add("@BornDate", SqlDbType.SmallDateTime, 4).Value = TextBox3.Text
            End With
            sqlCommand.ExecuteNonQuery()
            MsgBox("当前数据已成功添加到数据库中。")
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            sqlCommand.Dispose()
            Conn.Dispose()
        End Try

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '先在窗体上任意拖三个文本框
        TextBox1.Text = "BCCN"
        TextBox2.Text = "123456789"
        TextBox3.Text = "2013-3-25"
    End Sub
End Class


重要的不是写个例子给你,你要知道什么是存储过程才行
#18
smy7272013-03-25 15:52
非常感谢!这样我就容易多了
#19
Jason10222013-03-26 16:51
kan budong
1