1

Sql サーバーの .mdf データベースを予約できないという問題がありますが、読み取ることはできます。

エラーメッセージは表示されず、考えられるすべてを試しました。どんな助けでも大歓迎です、そして前もって感謝します!insert into コマンドに使用されるコードは次のとおりです。

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    Dim SQLCode As New SQLCode
    Dim con As New SqlConnection
    Dim cmd As New SqlCommand
    Dim lrd As SqlDataReader
    Dim inscmd As New SqlCommand

    cmd.Parameters.AddWithValue("@StaffInitials", lblStaffInitials.Text.Trim())
    lblStaffInitials.Text = lblStaffInitials.Text
    cmd.Parameters.AddWithValue("@Week", lblWeek.Text.Trim)
    lblWeek.Text = lblWeek.Text
    cmd.Parameters.AddWithValue("@Period", (lblPeriod.Text.Trim))
    lblPeriod.Text = lblPeriod.Text
    cmd.Parameters.AddWithValue("@Day", lblDay.Text.Trim)
    lblDay.Text = lblDay.Text
    cmd.Parameters.AddWithValue("@Subject", lblSubject.Text.Trim)
    lblSubject.Text = lblSubject.Text
    cmd.Parameters.AddWithValue("@YearGroup", lblYear.Text.Trim)
    lblYear.Text = lblYear.Text
    cmd.Parameters.AddWithValue("@NumberOfPupils", (lblNoOfPupils.Text.Trim))
    lblNoOfPupils.Text = lblNoOfPupils.Text
    cmd.Parameters.AddWithValue("@ControlledAssesment", lblControlledAssesment.Text.Trim)
    lblControlledAssesment.Text = lblControlledAssesment.Text
    cmd.Parameters.AddWithValue("@Room", lblRoom.Text.Trim)
    lblRoom.Text = lblRoom.Text
    cmd.Parameters.AddWithValue("@Session", txtSession.Text.Trim)
    txtSession.Text = txtSession.Text

con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("RoomBookingSystem.My.MySettings.Database1ConnectionString1").ConnectionString
    Try
        Using cn As New SqlConnection(con.ConnectionString)
            con.Open()
            inscmd.CommandText = "INSERT INTO Booking (Week, Day, Period, Subject, YearGroup, StaffInitials,NumberOfPupils,Session,Room,ControlledAssesment) VALUES (@Week,@Day,@Period,@Subject,@YearGroup,@StaffInitials, @NumberOfPupils,@Session,@Room,@ControlledAssesment)"
            inscmd.Connection = con
            inscmd.ExecuteNonQuery()
            inscmd.Parameters.Clear()
        End Using

    Finally
        con.Close()
    End Try
    MsgBox("Your Booking Has Been Made Successfully")
    Clicky = False
    MainViewForm.btnBackToBooking.Visible = False
    FormView.Show()
    Me.Hide()
End Sub
4

2 に答える 2

1

1 つだけが必要な場合、2 つの異なる Sql コマンドSqlCommandがあります。inscmdパラメータをではなくに追加しますcmd

したがって、次の行を削除するだけです:

Dim cmd As New SqlCommand

そして、残りのためにこれを行います:

inscmd.Parameters.AddWithValue("@StaffInitials", lblStaffInitials.Text.Trim())
.....
.....

注意すべきもう1つのことは、これは必要ありません:

Using cn As New SqlConnection(con.ConnectionString)

次のようにコードを変更します。

Try
 con.Open()
 inscmd.CommandText = "INSERT INTO Booking (Week, Day, Period, Subject, YearGroup, StaffInitials,NumberOfPupils,Session,Room,ControlledAssesment) VALUES (@Week,@Day,@Period,@Subject,@YearGroup,@StaffInitials, @NumberOfPupils,@Session,@Room,@ControlledAssesment)"
 inscmd.Connection = con
 inscmd.ExecuteNonQuery()
 inscmd.Parameters.Clear()

 Catch ex As Exception
     // use message box to read the error (if there is any). or simply read the
     // ex.Message in debuggin mode.
 Finally
     con.Close()
 End Try

ちなみに、このプロパティをどこに設定しているのかわかりませんcon.ConnectionString。接続文字列はどこにありますか?

于 2013-02-06T10:25:13.107 に答える
1

私が知る限り、問題はデータベースの場所にあります。

プログラムがデバッグされると、データベースのコピーがbin/debug フォルダー内に配置されます。ここを調べると、コピーが表示され、コードは元のデータベースではなくこのデータベースに直接 アクセスします ([すべてのファイルを表示] をクリックすると、 bin/debug ファイルに移動し、データベース エクスプローラーで開くと、最後のデバッグ/実行で推定されたデータを確認できます)

これを修正するには、次のことを行う必要があります。

接続文字列

 con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("RoomBookingSystem.My.MySettings.Database1ConnectionString1").ConnectionString

前述の bin フォルダー内のデータベースに接続します。

app.configファイルに移動して、データベースの特定の場所を見つけ、これを接続文字列に使用する必要があります。これにより、データベースのコピー以外からデータを挿入/更新できます。

于 2013-02-09T15:22:28.670 に答える