vb.net+sql2005为什么明明操作成功。但却没东西写入数据库!!!!!
下面是我的代码!请高手给我指点,不盛感激!
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim mycon As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")
mycon.Open()
Dim sql As String = "insert into message(sendtime,sender,receiver,title,message,type,status) values(getdate(),'" + login.id.Text.Trim() + "','" + Me.TextBox1.Text.Trim() + "','" + Me.TextBox2.Text.Trim() + "','" + Me.TextBox3.Text.Trim() + "',0,0)"
Dim cmd As New SqlCommand
cmd.Connection = mycon
cmd.CommandText = sql
Try
cmd.ExecuteNonQuery()
MessageBox.Show("发送成功")
mian.Show()
Me.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub --------------------编程问答-------------------- Try
'ExecuteNonQuery方法是对连接执行 Transact-SQL 语句并返回受影响的行数
'cmd.ExecuteNonQuery()
'如果你这样写
dim i as integer=cmd.ExecuteNonQuery()
if i=1 then
MessageBox.Show("发送成功")
else
MessageBox.Show("没有写入数据")
end if
mian.Show()
Me.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
--------------------编程问答-------------------- 但我的问题在于,现在'cmd.ExecuteNonQuery()根本没把值写到数据库啊!
我主要目的在于要写入数据库 --------------------编程问答-------------------- 使用 @参数的方式比较直观
不要再使用 +或者&了
另外 我也没看出来为什么 --------------------编程问答-------------------- 谢谢楼上的。
我真好想解决这个问题啊,就是卡在数据库写不上去,这是为什么啊。
希望有朋友也可以把你们写的vb.net同样操作的代码发来让我试试 --------------------编程问答-------------------- 楼主要学会先严谨的代码,就如一楼的这样
而且要记得关闭连接
SQL没执行成功,你可以把执行的SQL,取出来,放到查询分析器了,错误就很明了了 --------------------编程问答-------------------- 谢谢楼上的建议
但问题依然存在!
跪求解决办法 --------------------编程问答-------------------- private mycon As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sql As String = "insert into message(sendtime,sender,receiver,title,message,type,status) values(getdate(),'" + login.id.Text.Trim() + "','" + Me.TextBox1.Text.Trim() + "','" + Me.TextBox2.Text.Trim() + "','" + Me.TextBox3.Text.Trim() + "',0,0)"
Dim cmd As New SqlCommand
cmd.Connection = mycon
cmd.CommandText = sql
Try
mycon.Open()
cmd.ExecuteNonQuery()
MessageBox.Show("发送成功")
Catch ex As Exception
MessageBox.Show(ex.Message)
finally
mycon.close()
End Try
End Sub
我一边都用封装的类库 --------------------编程问答-------------------- 楼上的。还是不可以!
我根本就不知道为什么了。快崩溃掉了 --------------------编程问答-------------------- 一楼的
就是按你那样改了,我还是有返回了影响的行数
意思也代表着有值写进去了,但在数据库里就是没有啊
我痛苦啊
求高手相助啊 --------------------编程问答-------------------- 你得检查 cmd.ExecuteNonQuery() 的返回,才能确定是否成功
int affectedRecords = cmd.ExecuteNonQuery();
MessageBox.Show("插入记录数: " + affectedRecords ) --------------------编程问答-------------------- 意思也代表着有值写进去了,但在数据库里就是没有啊
==========
真见鬼了........
你不要把数据库给搞错了哦 --------------------编程问答-------------------- 前几天看了下书
sql2005有个设置是 如果主键重复就忽略插入语句
我想应该是这方面的原因,具体是哪google下吧 --------------------编程问答-------------------- 我没搞错数据库。
主键重复?我刚试了一个最简单的例子,主键也设置了
还是一个样子。没有值,但操作就是成功了 --------------------编程问答-------------------- 执行是成功了,但是,你的sql语句有问题, --------------------编程问答-------------------- 为什么说我语句有问题,我用断点调试的时候可以把值都取到了啊!
也请各网友把方法写出来给我啊! --------------------编程问答-------------------- 直接到数据库中运行你的语句,看看结果如何 --------------------编程问答-------------------- 你把sql语句放到查询分析器中运行一下,看看能不能把数据更新到数据库中? --------------------编程问答-------------------- sql2005里面我放到
查询分析里面,我只能写成“insert into [user](**) values()”values()里面没办法写成'" + login.id.Text.Trim() + "','" + Me.TextBox1.Text.Trim() + "'这样东西啊!
如果那个朋友愿意帮我一下的,MQQ378470647我把源码给你! --------------------编程问答-------------------- insert into [user](username,password) values('aaaa','bbbb')
根据字段名去弄 --------------------编程问答-------------------- 我不管怎么实验都是一样的结果
仿佛值只写到内存中,没写到数据库一样!
我就是把insert into [user](username,password) values(0,0)他一样给我成功,但值就是没写到数据库! --------------------编程问答-------------------- 设个断点然后F10步进到cmd.ExecuteNonQuery()这一句
然后看你当时的commandtext到底是什么,然后扔到查询分析器里去试 --------------------编程问答-------------------- "insert into [user](id,pwd) values('12','12')"
cmdtext已经取到值了!
我没办法在这时候把这样的值弄到查询分析器里面 --------------------编程问答-------------------- 先把sql语句放在查询分析器里面测试一下
如无问题 你只能检查系统的配置问题了...
你的代码应该是无误的 --------------------编程问答-------------------- Dim sql As String = "insert into message(sendtime,sender,receiver,title,message,type,status) values(getdate(),'" + login.id.Text.Trim() + "','" + Me.TextBox1.Text.Trim() + "','" + Me.TextBox2.Text.Trim() + "','" + Me.TextBox3.Text.Trim() + "',0,0)"
Dim SQL_CMD As New SqlCommand(sql, SQL_Con1)
SQL_CMD.CommandType = CommandType.Text
SQL_CMD.ExecuteNonQuery()
--------------------编程问答-------------------- 1、看看那个表上又没有Trigger
2、检查设置 --------------------编程问答-------------------- 我也出现这种的情况的
我的问题一般是
1 我的sql语句写错了
2 是不该有空格的出现了空格
3 就是我一般是这样写 trim(textbox1.text) 我不知道你写的TextBox2.Text.Trim() 这个是不是给我一个意思
在给你个建议
先在查询分析器里写一下看看有没有问题
然后在在自己的程序里写
我都这样的为了保险
我一般就出现这几中情况
我有一次 就是因为一个空格
我找了一下午 就一个空格呀(哎呀就是顺手打了个空格)
当我最后找到后
我当时易做图
起死了 --------------------编程问答-------------------- 为什么还是没人能解决我的问题啊!!!! --------------------编程问答-------------------- 你是如何判断 你的值是否已存在数据库中,如果是在数据库管理器中查询没有的话,那才是没插入。如果是你在程序中的DataGrid中没有的话,就要考虑在你插入值之后是否对DataGrid重新进行过数据绑定。 --------------------编程问答-------------------- sql2005里面我放到
查询分析里面,我只能写成“insert into [user](**) values()”values()里面没办法写成'" + login.id.Text.Trim() + "','" + Me.TextBox1.Text.Trim() + "'这样东西啊!
你可以在
Dim sql As String = "insert into message(sendtime,sender,receiver,title,message,type,status) values(getdate(),'" + login.id.Text.Trim() + "','" + Me.TextBox1.Text.Trim() + "','" + Me.TextBox2.Text.Trim() + "','" + Me.TextBox3.Text.Trim() + "',0,0)"
Dim cmd As New SqlCommand
下面加一句
console.writeline sql
然后把输出sql变量内容复制到查询分析器里面,这样就知道有没有问题了 --------------------编程问答-------------------- 我一个好朋友,给出了答案,正确的答案!详见
http://blog.163.com/ysli_195/blog/static/42054194200772925424164/
原来是VB。NET在VS 2005里面放置数据库文件路径的问题和运行机制的一个小差别。
忠心希望CSDN.net能有更多的高手出来解决问题,这对大家也是是福音 --------------------编程问答-------------------- 29楼的方法可行,或将sql复制到剪贴板,但如果从datagridview中同时写入很多数据,怎样判断哪些没有写进数据?有哪位高手分享一下? --------------------编程问答-------------------- 你查一查你的连接字符串,是不是连到别的server上了? --------------------编程问答-------------------- Dim mycon As New SqlConnection( "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True ")
用这个类,有引用哪个命名空间呀? --------------------编程问答--------------------
System.Data.SqlClient --------------------编程问答-------------------- msgbox(cmd.ExecuteNonQuery())看看它的值是多少,非0的话则插入成功! --------------------编程问答-------------------- values( '12 ', '12 ')
改成:values( & "'" & 12 & "'," & "'" & 12 & "'")
--------------------编程问答-------------------- Imports System.Data.SqlClient
Public Class Form1
Dim Conn As SqlConnection
Dim Comm As SqlCommand
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mycon As New SqlConnection( "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True ")
mycon.Open()
Dim sql As String = "insert into message(sendtime,sender,receiver,title,message,type,status) values(getdate(), ' " + login.id.Text.Trim() + " ', ' " + Me.TextBox1.Text.Trim() + " ', ' " + Me.TextBox2.Text.Trim() + " ', ' " + Me.TextBox3.Text.Trim() + " ',0,0) "
Comm = New SqlCommand(sql, Conn)
Comm.ExecuteNonQuery()
Conn.Close()
MessageBox.Show("保存成功!")
Catch ex As Exception
MessageBox.Show(ex.ToString()) --------------------编程问答-------------------- 怀疑根本不是没写入,肯定是你自己的问题:
1.根本有两个数据库,一个服务器,一个本机;
2.你一直查的是你本机,实际你代码连接的是服务器,所以导致你Insert的时候不停往服务器插入数据,自己在本机一直查询没有插入.
你个可能性非常非常大. --------------------编程问答-------------------- 用本机装开发版SQL做为目的数据库,断开网络.
程序中连接这个本地SQL服务器.
SQL语句中的+改&,检查每个值与SQL中列的类型是否一致,尤其是日期型和字符串,要用引号括起来的
个人建立代码替换,每次替换掉SQL语句中的一个值,例如getdate()直接改为一个具体日期值
设置断点,在断点处 debug.print出这个string,然后拷贝到查询器(查询器也是连接这个数据库)中执行,然后,就知道什么问题了
--------------------编程问答-------------------- 用本机装开发版SQL做为目的数据库,断开网络.
程序中连接这个本地SQL服务器.
SQL语句中的+改&,检查每个值与SQL中列的类型是否一致,尤其是日期型和字符串,要用引号括起来的
个人建立代码替换,每次替换掉SQL语句中的一个值,例如getdate()直接改为一个具体日期值
设置断点,在断点处 debug.print出这个string,然后拷贝到查询器(查询器也是连接这个数据库)中执行,然后,就知道什么问题了
--------------------编程问答-------------------- (getdate(), ' " + login.id.Text.Trim() + " ', ' " + Me.TextBox1.Text.Trim() + " ', ' " + Me.TextBox2.Text.Trim() + " ', ' " + Me.TextBox3.Text.Trim() + " ',0,0) "
改为
("'"&getdate()&"', ' " + login.id.Text.Trim() + " ', ' " + Me.TextBox1.Text.Trim() + " ', ' " + Me.TextBox2.Text.Trim() + " ', ' " + Me.TextBox3.Text.Trim() + " ',0,0) "
补充:.NET技术 , VB.NET