2015-12-08 5 views
0

Я использую Visual Studio 2015, и я не могу получить свой код для вставки данных в базу данных Visual Studio. Ошибок нет, а страница aspx работает нормально, но данные не записываются. Вот мой код:Как вставить в базу данных Visual Studio с помощью vb.net

Dim strConnectionString As String = System.Configuration.ConfigurationManager.ConnectionStrings("Project1ConnectionString").ConnectionString 
    Dim drCart As SqlDataReader 
    Dim strSQLStatement As String 
    Dim cmdSQL As SqlCommand 
    strSQLStatement = "SELECT * FROM OrderHead" 
    Dim conn As New SqlConnection(strConnectionString) 
    cmdSQL = New SqlCommand(strSQLStatement, conn) 
    conn.Open() 
    drCart = cmdSQL.ExecuteReader() 

    Dim ExpCard = CMonth.Text + CYear.Text 
    Dim Fname = FristTxt.Text 
    Dim Lname = LastTxt.Text 
    Dim Address1 = AddTxt1.Text 
    Dim Address2 = AddTxt2.Text 
    Dim City = CityTxt.Text 
    Dim State = StateDList.Text 
    Dim ZipCode = ZipTxt.Text 
    Dim PhoneNum = NumTxt.Text 
    Dim CreditNum = CNumber.Text 
    Dim CreditType = CtypeList.Text 

    If drCart.Read() Then 

     Dim strSQLStatement2 = "Insert into OrderHead (FirstName, LastName, StreetAddress, City, State, Zip, PhoneNumber, CreditCard, CreditType, ExpDate, StreetAddress2) VALUES (" & Trim(Fname) & 
      ", " & Trim(Lname) & ", " & Trim(Address1) & ", " & Trim(City) & ", " & Trim(State) & 
      ", " & CInt(ZipCode) & ", " & CInt(PhoneNum) & ", " & CInt(CreditNum) & ", " & Trim(CreditType) & 
      ", " & CInt(ExpCard) & ", " & Trim(Address2) & "')" 
     Dim conn2 As New SqlConnection(strConnectionString) 
     conn2.Open() 
     Dim cmdSQL2 = New SqlCommand(strSQLStatement2, conn2) 
     drCart = cmdSQL2.ExecuteReader() 
     conn2.Close() 
    End If 

Буду признателен, если вы можете указать мою ошибку.

+2

Не используйте ExecuteReader для INSERT данных; dont concat SQL, используйте Parameters и ради всего святого, не храните номера кредитных карт в незашифрованном виде (если вообще) и, конечно же, не как Ints. И удалите объекты БД – Plutonix

ответ

0

Как Плутоникс говорит: ExecuteReader предназначен для чтения результатов запроса SELECT по строке за раз. Вы хотите, чтобы ExecuteNonQuery выполнял запрос INSERT.

Кроме того, НИКОГДА не используйте конкатенацию для создания запроса с пользовательским вводом. В некоторых случаях вам может показаться полезным создавать запросы из заранее определенных строк, но со случайным входом человек с плохими намерениями может уничтожить всю вашу базу данных правильным вводом. Используйте Parameters !!

Смежные вопросы