|登录 |注册

查看: 2904|回复: 39
打印 上一主题 下一主题

VB.NET疑问

[复制链接]
Kinni
2013-3-25 08:30 PM
请问下这个Code的问题在哪里?当我输入 ID,Pass,FirstName都符合Database,但是LasNamet不符合的话它也会成功进入Insert Data的情况然后会出现error因为有些Data重复了.


Dim DBCon As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Kini\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsApplication1\bin\Debug\VB.accdb")
            Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Staff WHERE StaffID ='" & txtStaffID.Text & "' and Password = '" & txtPass.Text & "' and  UserFirstName= '" & txtFN.Text & "' and UserLastName= '" & txtLN.Text & "'", DBCon)
            DBCon.Open()
            Dim sdr As OleDbDataReader = cmd.ExecuteReader()
            If (sdr.Read() = True) Then
                MessageBox.Show("The data entered already exist!", "System Information")
                sdr.Close()
                DBCon.Close()
            ElseIf (sdr.Read() = False) Then
                Dim cmd2 As String
                Dim DBCon2 As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Kini\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsApplication1\bin\Debug\VB.accdb")
                cmd2 = "INSERT INTO Staff Values ( '" & txtStaffID.Text & "', '" & txtPass.Text & "','" & txtFN.Text & "', '" & txtLN.Text & "')"
                Dim sdr2 As OleDbCommand
                sdr2 = New OleDbCommand(cmd2, DBCon2)
                DBCon2.Open()
                Dim objcmd As OleDbCommand
                objcmd = New OleDbCommand(cmd2, DBCon2)
                objcmd.ExecuteNonQuery()
                DBCon2.Close()
                valid5 = True
            End If
        End If
ぁあぃ←
2013-3-25 08:35 PM
可能你的primary key 重複~
suki89
2013-3-25 08:51 PM
lz的error是什么??
Kinni
2013-3-25 09:50 PM
ぁあぃ← 发表于 2013-3-25 08:35 PM
可能你的primary key 重複~

但是除了描述的问题以外...就不会出现error了@@
Kinni
2013-3-25 09:57 PM
suki89 发表于 2013-3-25 08:51 PM
lz的error是什么??

你好
比如说:
Type                Database          Insert
ID                     Haha                 Haha
Pass                 Hahaha             Hahaha
FirstaName      Hahahaha         Hahahaha
LastName        Hoho                 Haha
Database是我原有的资料,然后Insert是要加入的资料
因为LastName是Database里面找不到的所以会进入Insert condition
但是因为里面有相同的资料比如 ID=Haha Insert= Haha
出现重复所以不能Insert而cmd.executenonquery()出现错误
但是我已经写了 If sdr= false才可以进入
然后我有试过把每一样东西 ID,Pass,FirstName,LastName都各用一个Valid
然后变成 If valid1, valid2, valid3, valid4= false才进入condition...但是这样过后就Insert不到资料了
suki89
2013-3-25 10:09 PM
Kinni 发表于 2013-3-25 09:57 PM
你好
比如说:
Type                Database          Insert

error message是什么?
Kinni
2013-3-25 10:11 PM
suki89 发表于 2013-3-25 10:09 PM
error message是什么?

objcmd.ExecuteNonQuery()出现重复
Kinni
2013-3-25 10:12 PM
suki89 发表于 2013-3-25 10:09 PM
error message是什么?

顺便问问....为什么我的Error Message是华语??但是User Interface 是英文的= =
suki89
2013-3-25 10:13 PM
Kinni 发表于 2013-3-25 10:11 PM
objcmd.ExecuteNonQuery()出现重复

你的error message是华语的??!!
suki89
2013-3-25 10:25 PM
Kinni 发表于 2013-3-25 10:12 PM
顺便问问....为什么我的Error Message是华语??但是User Interface 是英文的= =

去setting调看看吧。
lz你的sdr.Read() = False过后没close reader耶。
把 sdr.Close() 和 DBCon.Close() 加在sdr.Read() = False后,在试试看还会有问题吗。

小小建议:如果DBCon是一样的Connection的话,就不要放那么多,program会变慢,自己看了也乱。
您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2025-12-31 09:54 PM , Processed in 0.088179 second(s), 20 queries .

Powered by Discuz! X2.5 © 2001-2012 Comsenz Inc.

本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved

Dedicated Server powered by iCore Technology Sdn. Bhd.

合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部