2013-07-04 138 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();