2013-07-04 3 views
-4

Новичок здесь. Нужны советы. Я хотел бы вставить значения в базу данных и до сих пор не ошибка в коде. Я не могу понять эту проблему, почему она не вставить значения в базу данныхКак вставить значения в базу данных

Вот мой код

  string Constr = @"Data Source=(local);Integrated Security=True;Database=DDLYBank"; 
      SqlConnection Conn = new SqlConnection(Constr); 
      string MainAccInfo = "Select AccountNo, HashValue from MainAcc Where HashValue = '" + ccinfo + "'"; 
      SqlCommand cmd1 = new SqlCommand(MainAccInfo, Conn); 
      SqlDataReader read1 = cmd1.ExecuteReader(); 


      using (SqlCommand command = Conn.CreateCommand()) 
      { 
       command.CommandText = "Insert INTO Record (AccountNo, HashValue, Debit, Balance, Date_Time, FingerPrint) Values (@AccountNo, @HashValue, @Debit, @Balance, @Date_Time, @FingerPrint)"; 

       command.Parameters.AddWithValue("@AccountNo", read1["AccountNo"]); 
       command.Parameters.AddWithValue("@HashValue", read1["HashValue"]); 
       command.Parameters.AddWithValue("@Debit", rDebit); 
       command.Parameters.AddWithValue("@Balance", aBalance); 
       command.Parameters.AddWithValue("@Date_Time", rDate); 
       command.Parameters.AddWithValue("@FingerPrint", rFingerPrint); 

       Conn.Open(); 
       command.ExecuteNonQuery(); 
      } 

     } 
     catch (SqlException ex) 
     { 
      return; 
     } 
+0

Вы пропускаете @ знаки перед вашими именами параметров в команде SQL. –

+0

Вы имеете в виду это? "@AccountNo" Я попробовал. Все еще не могу, я бы сделал это. –

+0

Вы получаете исключение? – Jodrell

ответ

1

Прежде всего, вы пытаетесь сделать, не должно быть сделано, как это делается :) ли это с Хранится Процедуры в SQL Server.

CREATE PROC CreateNewFromHashValue 
    @HashValue NVARCHAR(128), 
    @Debit INT, 
    @Balance INT, 
    @Date DATETIME, 
    @FingerPrint NVARCHAR(128) 
AS 

INSERT INTO Record (AccountNo, HashValue, Debit, Balance, Date_Time, FingerPrint) 
SELECT AccountNo, HashValue,@Debit,@Balance,@Date,@FingerPrint 
    FROM MainAcc 
    WHERE HashValue = @HashValue 

SELECT TOP 1 * 
    FROM Record 
    ORDER BY DESC 

GO 

, то мы называем его из .NET:

 // create and open a connection object 
     SqlConnection conn = new SqlConnection("Data Source=(local);Integrated Security=True;Database=DDLYBank"); 
     try { 
     conn.Open(); 

     // 1. create a command object identifying 
     // the stored procedure 
     SqlCommand cmd = new SqlCommand("CreateNewFromHashValue", conn); 

     // 2. set the command object so it knows 
     // to execute a stored procedure 
     cmd.CommandType = CommandType.StoredProcedure; 

     // 3. add parameter to command, which 
     // will be passed to the stored procedure 
     cmd.Parameters.Add(new SqlParameter("@HashValue","YOUR HashValue")); 
     cmd.Parameters.Add(new SqlParameter("@Debit",1)); // Your Debit,INT? 
     cmd.Parameters.Add(new SqlParameter("@Balance",1)); // Your Balance ,INT? 
     cmd.Parameters.Add(new SqlParameter("@Date",DateTime.Now)); // datetime :) 
     cmd.Parameters.Add(new SqlParameter("@FingerPrint","FingerPrint")); // FingerPrint 

     using (SqlCommand cmd = conn.CreateCommand()) 
     { 
      cmd.ExecuteNonQuery(); 
     } 

    } catch (Exception ex) { 
     // NOT ONLY RETURN HER !!! 
     Console.WriteLine(ex.Message.ToString()); 
    } 


    //Remember to to close conn then you are done. 
    conn.Close(); 
Смежные вопросы