Запрос SQL Server CE не имеет никакого эффекта? - PullRequest
0 голосов
/ 28 августа 2011

Я пытаюсь вставить строки в базу данных SQL Server CE, и она возвращает, что затронута 1 строка, нет исключения и нет синтаксической ошибки в запросе, насколько я вижу, - но это не имеет никакого эффекта,когда я смотрю в таблицу из Database Explorer.

Если я запускаю запрос через VS, все работает нормально.Насколько я могу судить, проблем с подключением нет ... что я здесь не так делаю?

Вот код, хотя, вероятно, это не имеет значения:

    Using conn As New SqlCeConnection(My.Settings.DietSafetyCheckerReportsConnectionString)
        conn.Open()

        Using cmd As SqlCeCommand = conn.CreateCommand()
            cmd.CommandText = "INSERT INTO Reports(PatientID, PreparedBy, PreparedFor, WeightInKilos, HeightInMeters, Age, PercentBodyFat, ElbowMeasurementInCentimeters, ReportDate, Gender) " &
                              "VALUES(@pid, @pby, @pfor, @weight, @height, @age, @bodyfat, @elbow, @rdate, @gender);"

            cmd.Parameters.Add("@pid", SqlDbType.NVarChar, 100).Value = Me.PatientID
            cmd.Parameters.Add("@pby", SqlDbType.NVarChar, 100).Value = Me.PreparedBy
            cmd.Parameters.Add("@pfor", SqlDbType.NVarChar, 100).Value = Me.PreparedFor
            cmd.Parameters.Add("@weight", SqlDbType.Float).Value = Me.WeightInKilos
            cmd.Parameters.Add("@height", SqlDbType.Float).Value = Me.HeightInMeters
            cmd.Parameters.Add("@age", SqlDbType.TinyInt).Value = Me.Age
            cmd.Parameters.Add("@bodyfat", SqlDbType.Float, 100).Value = Me.PercentBodyFat
            cmd.Parameters.Add("@elbow", SqlDbType.TinyInt, 100).Value = Me.ElbowMeasurementInCentimeters
            cmd.Parameters.Add("@rdate", SqlDbType.DateTime).Value = Me.ReportDate
            cmd.Parameters.Add("@gender", SqlDbType.TinyInt, 100).Value = Me.Gender

            If cmd.ExecuteNonQuery() <> 1 Then Throw New ApplicationException("Failed to insert row into databse.")
        End Using

        conn.Close()
    End Using

(Кстати, это тоже не работает:

    Using da As New SqlCeDataAdapter("SELECT * FROM Reports", conn)
            Dim ds As New DietSafetyCheckerReportsDataSet()
            Dim dt As DietSafetyCheckerReportsDataSet.ReportsDataTable
            da.Fill(ds)
            dt = DirectCast(ds.Tables("Reports"), DietSafetyCheckerReportsDataSet.ReportsDataTable)
            Dim dr As DietSafetyCheckerReportsDataSet.ReportsRow = dt.NewReportsRow()
            dr.Age = Me.Age
            dr.ElbowMeasurementInCentimeters = Me.ElbowMeasurementInCentimeters
            dr.Gender = Me.Gender
            dr.HeightInMeters = Me.HeightInMeters
            dr.PatientID = Me.PatientID
            dr.PercentBodyFat = Me.PercentBodyFat
            dr.PreparedBy = Me.PreparedBy
            dr.PreparedFor = Me.PreparedFor
            dr.ReportDate = Me.ReportDate
            dr.WeightInKilos = Me.WeightInKilos
            dt.Rows.Add(dr)
            da.Update(ds)
        End Using
)

Ответы [ 2 ]

2 голосов
/ 28 августа 2011

Загляните в папку bin / debug, возможно, у вас больше копий того же файла базы данных

0 голосов
/ 28 августа 2011

Мое предложение заключается в том, что вы отключили режим autocommit на сервере (который включен по умолчанию) или в настройках соединения, поэтому вам необходимо зафиксировать транзакцию вручную. Посмотрите здесь для получения дополнительной информации.

...