标题:这里真的没人能帮我吗,这个问题我已经折腾一个星期了也没解决!
取消只看楼主
杀虫剂
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-12-12
 问题点数:0 回复次数:12 
这里真的没人能帮我吗,这个问题我已经折腾一个星期了也没解决!
数据就是写不进数据库!!!
也许不是代码问题,但问题可能出在哪里呢?
我在网上也搜了好几天了,没有类似的问题.

请大家帮忙看看这段代码哪里有问题,谢谢!
Shared Function Insert(ByVal ConnectionString As String, ByVal SQLString As String) As Integer
        Dim Connection As SqlConnection = New SqlConnection(ConnectionString)
        Dim Command As SqlCommand = New SqlCommand(SQLString, Connection)
        Dim Transaction As SqlTransaction
        Dim Count As Integer = 0

        Connection.Open()
        Transaction = Connection.BeginTransaction()
        Command.Transaction = Transaction

        Try
            Count = Command.ExecuteNonQuery()
            ()
        Catch ex As SqlException
            MsgBox(ex.ToString())
        Catch ex As Exception
            MsgBox(ex.ToString())
        Finally
            Connection.Close()
        End Try
        Return Count
    End Function

学习VB2005中
调用insert后count的返回值说明数据库操作正常,但就是没有添加进数据.
可我的代码里有commit呀
传进的参数为SQLString = "INSERT INTO Table1(aaa,bbb,ccc) VALUES('a2','b2','c2')"
自己研究好几天了,不知道哪里错了.
谢谢了!!!
搜索更多相关主题的帖子: 折腾 
2007-12-13 10:49
杀虫剂
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-12-12
得分:0 
不同的地方有这些:
1\ Functiong中的 = SQLString ,我试过了,有没有这句结果是一样的.
2\  button1_click的设置:  1. Call Insert(conn, SQLString)这句有没有结果都一样.
                                             2.连接字符串不同
conn = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\练习.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
      这是从MyProject--->设置里面粘下来的,因为其他的设置会出错.(我不太肯定这么做对不对,这个连接字符串是系统自动生成的)
如果是连接字符串的问题,我应该怎么做呢,如果不是......
      问题还是没有解决
      我知道这是我学习上的一个坎,请帮助一下.谢谢了!
2007-12-13 15:26
杀虫剂
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-12-12
得分:0 
将"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\练习.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"中的Data Source=.\SQLEXPRESS"
改为Data Source=localhost编译时报错.
AttachDbFilename=|DataDirectory|\练习.mdf更改后同样报错.
重新设定SQL server 2005的配置,改成正在运行和自动,还有网络\本地都可以.还是不行.

只要不是系统生成的连接字符串一编译就出错
数据库就是添加不了
高手们快帮帮忙吧!!!!!!!
2007-12-13 16:57
杀虫剂
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-12-12
得分:0 
这样吧,你新建一个工程,添加一个类,把下面的粘过去.
Imports System.Data.SqlClient
Public Class EditDataBase
    Shared Function Insert(ByVal ConnectionString As String, ByVal SQLString As String) As Integer
        Dim Connection As SqlConnection = New SqlConnection(ConnectionString)
        Dim Command As SqlCommand = New SqlCommand(SQLString, Connection)
        Dim Transaction As SqlTransaction
        Dim Count As Integer = 0
        Command.Connection = Connection
        Connection.Open()
        Transaction = Connection.BeginTransaction()
        Command.Transaction = Transaction
        Try
            Count = Command.ExecuteNonQuery()
            ()
        Catch ex As SqlException
            MsgBox(ex.ToString())
        Catch ex As Exception
            MsgBox(ex.ToString())
        Finally
            Connection.Close()
        End Try
        Return Count
    End Function
    Shared Function Delete(ByVal ConnectionString As String, ByVal table As String, ByVal row As String, ByVal value As String) As Integer
        Dim Connection As SqlConnection = New SqlConnection(ConnectionString)
        Dim SQLString As String = "Delete Form" + table + "Where" + row + "=" + "" + value + ""
        Dim Command As SqlCommand = New SqlCommand(SQLString, Connection)
        Dim Count As Integer = 0
        Try
            Connection.Open()
            Count = Command.ExecuteNonQuery()
        Catch ex As SqlException
            MsgBox(ex.ToString())
        Finally
            Connection.Close()
        End Try
        Return Count
    End Function
    Shared Function Update(ByVal ConnectionString As String, ByVal table As String, ByVal StrContent As String, ByVal row As String, ByVal value As String) As Integer
        Dim Connection As SqlConnection = New SqlConnection(ConnectionString)
        Dim SQLString As String = "Update" + table + "Set" + StrContent + "Where" + row + "=" + "" + value + ""
        Dim Command As SqlCommand = New SqlCommand(SQLString, Connection)
        Dim Count As Integer = 0
        Try
            Connection.Open()
            Count = Command.ExecuteNonQuery()
        Catch ex As SqlException
            MsgBox(ex.ToString())
        Finally
            Connection.Close()
        End Try
        Return Count
    End Function
    Shared Function Search(ByVal ConnectionString As String, ByVal SQLString As String) As DataTable
        Dim Connection As SqlConnection = New SqlConnection(ConnectionString)
        Dim Command As SqlCommand = New SqlCommand(SQLString, Connection)

        Connection.Open()

        Dim Adapter As New SqlDataAdapter
        Adapter.TableMappings.Add("Table", "TEMP")
        Adapter.SelectCommand = Command

        Dim ObjectdsDataSet As New DataSet()
        Adapter.Fill(ObjectdsDataSet)

        Connection.Close()
        Return ObjectdsDataSet.Tables("TEMP")

    End Function
End Class
然后添加一个表,加个按钮,加个DataGridView控件
添加一个新数据源,选择microsoft SQL server 数据库文件
随便创建一个表,里面有aaa,bbb,ccc这几个列
把数据库连接好,打开解决方案资源管理器中的My Project,打开设置,找到“值”那列的自动生成的连接字符串
粘贴到“按钮”的连接字符串中。
我的如下:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim connAddStr As String
        connAddStr = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\练习.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
        Dim SQLString = "INSERT INTO table1(aaa,bbb,ccc) VALUES('a1','b1','c1')"
        Dim count As Integer = EditDataBase.Insert(connAddStr, SQLString)
        SQLString = "insert into table1(aaa,bbb,ccc) values('a2','b2','c2')"
        count = count + EditDataBase.Insert(connAddStr, SQLString)
        Call EditDataBase.Insert(connAddStr, SQLString)

        If (count > 0) Then
            MsgBox("")
        End If
    End Sub

我就是这么做的,添加不了呀!
2007-12-13 17:10
杀虫剂
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-12-12
得分:0 
我登陆服务器使用的是windows 身份验证,没有用户名和密码。
2007-12-13 17:18
杀虫剂
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-12-12
得分:0 
不管怎样,先谢谢了!
我自己再想想.
2007-12-14 08:28
杀虫剂
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-12-12
得分:0 
我试了试创建SQL账户,显示错误:
"该用户与可信SQL server连接无关联",创建不了.
另外,找不到你说的企业资源管理器,菜单和工具栏都没有这一项,SQL sever manager里也没有。
我再查查看.
2007-12-14 09:32
杀虫剂
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-12-12
得分:0 
不仅能找到数据库,而且在服务器资源管理器--〉数据连接--〉表--〉table1用右键--〉显示数据表
都可以向数据库中添加数据,这个操作是确实添加到数据库中了,运行后能看得到。但是运行程序时就是添加不了。
另外,我用你贴的代码重新建了个工程,如果数据库用SQL帐号,创建的时候就显示
"该用户与可信SQL server连接无关联",根本创建不了。
如果用windows账户,可以创建,但运行时报错
“System.Data.SqlClient.SQLException:对象名‘test’无效”
用F8逐语句编译,发现
    Try
            Count = command.ExecuteNonQuery()
            ()
        Catch ex As Exception
            MsgBox(ex.ToString())
        Finally
            connection.Close()
        End Try
Try没有执行到,直接进入Catch ex As Exception 行,然后报错。

再有,企业资源管理器我的VS界面没有,SqlDataAdapter也没找到。
2007-12-14 10:12
杀虫剂
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-12-12
得分:0 
真没辙了,回头重装系统试试。
2007-12-14 13:36
杀虫剂
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-12-12
得分:0 
呵呵,重装系统中,刚把VISTA恢复,正在装杀毒软件,一会儿装office2007和visual studio2005.
不过我估计把表名改成test也不行,SQL sever注册不了,没法设定用户名和密码.估计是系统设定有问题.
另外access2007数据库用不了,没有12.0版本的ADO.从网上下了个升级包,运行后没反应,VS2005里也找不到12.0的只能找到4.0的,结果就是access2007的数据库不认.不知道怎么用.
我刚学,麻烦多着呢!呵呵,不过不怕,总会学会的.
还有你们的vs2005安装盘多大的?我的2个多G,不会是不完整的吧,要是这样我就白忙了.还得去下3个多G的那个,又要小一星期.
我原来编过程,DOS下的Basic;C++等等,好多年不用了,不过技巧\算法什么的对我来说问题不大.
现在接触面向对象的,还要适应一段时间.主要是软件的设定,麻烦死了,现在软件太大太复杂.
还有兼容性,我的VISTA开始连VS都装不上,研究了很长时间才知道如何装,不知道这个问题和VISTA的兼容性有没有关.
对我来说真把设定\连接什么的搞定,到编程就轻松了.
不过我感觉我的这个问题初学者很多人都回遇到,也许不那么简单就能搞定的,我基本已经排除了代码错误的因素,因为用书上的源代码问题也是一样.
连接字符串我网上查了,我直接从config里粘出来应该可以,剩下就是设置问题了.
企业资源管理器我根本找不到,还有网上说的类似问题的一些工具什么的我也没有,所以怀疑系统不全.但愿我错了,最好只是个小问题.
希望到2008年前能解决这个问题.
谢谢帮忙!
2007-12-14 16:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-192186-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.065569 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved