使用 vb.net 在 sql 数据库中插入数字(如学生 ID、员工 ID)

Posted

技术标签:

【中文标题】使用 vb.net 在 sql 数据库中插入数字(如学生 ID、员工 ID)【英文标题】:insert number in sql database with vb.net (like student ID, Employee ID) 【发布时间】:2015-12-14 01:43:46 【问题描述】:

我想做一个自动生成的交易号。每次我在 sql 数据库中插入数据时,都在 sql 数据库中,例如学生 ID 或员工 ID。我现在能做的就是插入数据。但我不知道如何创建交易号。每次我添加数据。

Dim query As String = String.Empty
        query = "insert into marketingLog(TransCode,Endorser,Enrollee_Name,Course,Rebates,Trans_Date,CreatedBy,Status)" _
            & "values(@transcode,@endorser,@name,@course,@rebates,@transdate,@user,@status)"

        Using conn As New SqlConnection(dbUse.db)
            conn.Open()
            Using comm As New SqlCommand
                With comm
                    .Connection = conn
                    .CommandType = CommandType.Text
                    .CommandText = query

                    .Parameters.Add("@endorser", SqlDbType.VarChar).Value = cmbEndorser.Text 'Endorser
                    .Parameters.Add("@name", SqlDbType.VarChar).Value = txtEnrolleeName.Text 'Enrolle_Name
                    .Parameters.Add("@course", SqlDbType.VarChar).Value = cmbCourse.Text 'Course
                    .Parameters.Add("@rebates", SqlDbType.Int).Value = lblRebate.Text 'Rebates
                    .Parameters.Add("@transdate", SqlDbType.DateTime).Value = DateAndTime.Now
                    .Parameters.Add("@user", SqlDbType.VarChar).Value = lblUsername.Text
                    .Parameters.Add("@status", SqlDbType.VarChar).Value = "Standby"
                End With
                Try
                    comm.ExecuteNonQuery()
                    conn.Close()
                    loadmyGrid()
                    loadDefault()
                Catch ex As Exception
                    MessageBox.Show(ex.Message.ToString(), "Error Message")
                End Try
            End Using
        End Using

TransCode 是我的列名。我想在每笔交易中添加 1,2,3,4,5。我用它作为我的交易号。

【问题讨论】:

那么,这里的问题是什么? 设为自动增量 那么只需在您的 SQL 表中添加一个自增列?不知道这个有什么困难...... 【参考方案1】:
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)

您可以在表格中使用AUTO_INCREMENT 列。您无需为此列指定任何数据。此列的数据将在新记录插入时自动插入。

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

Check the fiddle here.

您的代码:您只需跳过将数据放入 Auto_Increment 列。

Dim query As String = String.Empty

    //query = "Select Max(TranCode) From marketingLog";

    Dim dtb As New DataTable;

    Using conn As New SqlConnection(dbUse.db)
    conn.Open()


    query = "insert into marketingLog(Endorser,Enrollee_Name,Course,Rebates,Trans_Date,CreatedBy,Status)" _
        & "values(@endorser,@name,@course,@rebates,@transdate,@user,@status)"


        Using comm As New SqlCommand
            With comm
                .Connection = conn
                .CommandType = CommandType.Text
                .CommandText = query
                                .Parameters.Add("@endorser", SqlDbType.VarChar).Value = cmbEndorser.Text 'Endorser
                .Parameters.Add("@name", SqlDbType.VarChar).Value = txtEnrolleeName.Text 'Enrolle_Name
                .Parameters.Add("@course", SqlDbType.VarChar).Value = cmbCourse.Text 'Course
                .Parameters.Add("@rebates", SqlDbType.Int).Value = lblRebate.Text 'Rebates
                .Parameters.Add("@transdate", SqlDbType.DateTime).Value = DateAndTime.Now
                .Parameters.Add("@user", SqlDbType.VarChar).Value = lblUsername.Text
                .Parameters.Add("@status", SqlDbType.VarChar).Value = "Standby"
            End With
            Try
                comm.ExecuteNonQuery()
                conn.Close()
                loadmyGrid()
                loadDefault()
            Catch ex As Exception
                MessageBox.Show(ex.Message.ToString(), "Error Message")
            End Try
        End Using
    End Using

【讨论】:

【参考方案2】:

在将数据插入到您找到的表之前,您可能会做什么

Select Max(TranCode) From marketingLog

它会第一次返回一些整数或0。

您只需将其增加 1。

然后执行插入。

实际上我不知道如何在 vb 中编码,但我正在尝试在您的代码中编写逻辑,请参考它并尝试使用 vb 应用

例如

    Dim query As String = String.Empty

    query = "Select Max(TranCode) From marketingLog";

    Dim dtb As New DataTable;

    Using conn As New SqlConnection(dbUse.db)
    conn.Open()

    Using dad As New SqlDataAdapter(query, conn)
    dad.Fill(dtb)

    Dim intTransNo As Integer  =  Int32.Parse(dtb.Rows(0)(0).ToString()) + 1;

    query = "insert into marketingLog(TransCode,Endorser,Enrollee_Name,Course,Rebates,Trans_Date,CreatedBy,Status)" _
        & "values(@transcode,@endorser,@name,@course,@rebates,@transdate,@user,@status)"


        Using comm As New SqlCommand
            With comm
                .Connection = conn
                .CommandType = CommandType.Text
                .CommandText = query
                .Parameters.Add("@transcode", SqlDbType.VarChar).Value = intTransNo
                .Parameters.Add("@endorser", SqlDbType.VarChar).Value = cmbEndorser.Text 'Endorser
                .Parameters.Add("@name", SqlDbType.VarChar).Value = txtEnrolleeName.Text 'Enrolle_Name
                .Parameters.Add("@course", SqlDbType.VarChar).Value = cmbCourse.Text 'Course
                .Parameters.Add("@rebates", SqlDbType.Int).Value = lblRebate.Text 'Rebates
                .Parameters.Add("@transdate", SqlDbType.DateTime).Value = DateAndTime.Now
                .Parameters.Add("@user", SqlDbType.VarChar).Value = lblUsername.Text
                .Parameters.Add("@status", SqlDbType.VarChar).Value = "Standby"
            End With
            Try
                comm.ExecuteNonQuery()
                conn.Close()
                loadmyGrid()
                loadDefault()
            Catch ex As Exception
                MessageBox.Show(ex.Message.ToString(), "Error Message")
            End Try
        End Using
    End Using

【讨论】:

你能给我一些我工作中的代码吗,我真的不明白我该如何开始这部分(添加交易号,如学生证) 请帮忙,我不知道如何在这部分编码。我所知道的只是插入数据,但是当谈到他们所说的我的 transno 的“自动增加某些东西”时。 这是我最后的努力朋友,我在那里写了一些我没有测试过的代码,但你可以自己测试一下。我通过谷歌搜索写了这段代码。请尝试自行实现逻辑

以上是关于使用 vb.net 在 sql 数据库中插入数字(如学生 ID、员工 ID)的主要内容,如果未能解决你的问题,请参考以下文章

SQL插入语句语法错误VB.net

如何从数据表 vb.net 向 sql server 数据库插入值

VB.Net/Access SQL 插入子查询问题

通过 vb.net 将日期插入 SQL Server 数据库

是否可以一次将整个 VB.NET 数据表插入 SQL Server

使用 vb.net 的字符串 sql 格式不正确插入失败?如何