2013-12-11 101 views
0

我的代碼出了問題。插入代碼不起作用。有人能告訴我我做錯了什麼嗎?當用戶點擊一個按鈕時,代碼應該將用戶名,密碼和角色插入我的數據庫,但是我的數據庫中沒有任何內容出現。無法插入數據庫asp.net C#

namespace Login_role 
{ 
    public partial class Register : System.Web.UI.Page 
    { 

     string strConnString = ConfigurationManager.ConnectionStrings["victs"].ConnectionString; 
     SqlCommand com; 

     protected void btn_register_Click(object sender, EventArgs e) 
     { 
      SqlConnection con = new SqlConnection(strConnString); 
      com = new SqlCommand(); 
      com.Connection = con; 
      com.CommandType = CommandType.Text; 
      com.CommandText = "Insert into Login values(@UserName,@Password,@Role)"; 
      com.Parameters.Clear(); 
      com.Parameters.AddWithValue("@UserName", txt_UserName.Text); 
      com.Parameters.AddWithValue("@Password", txt_Password.Text); 
      com.Parameters.AddWithValue("@Role", rbtRole.SelectedValue); 
      if (con.State == ConnectionState.Closed) 
       con.Open(); 
      com.ExecuteNonQuery(); 
      con.Close(); 
      lblmsg.Text = "Successfully Registered!!!"; 
      clear(); 
     } 
     private void clear() 
     { 
      txt_UserName.Text = ""; 
      rbtRole.ClearSelection(); 
     } 
    } 
} 
+2

你有任何錯誤,異常嗎? – Habib

+0

什麼是連接字符串,爲什麼你認爲「我的數據庫中沒有任何內容」? –

+0

我們可以假設代碼無誤地運行嗎?你有權訪問你的數據庫事務日誌嗎? – FLGMwt

回答

1

除非這些都是在你的LOGIN表中只有3列時,SQL Server(我的假設)將不會執行你的命令文本:

com.CommandText = "Insert into Login values(@UserName,@Password,@Role)"; 

這應該拋出一個異常,但(即使有上剩餘的列缺省值):

"Column name or number of supplied values does not match table definition." 

嘗試列出您的命令文本中列名,例如:

string sqlCmd = "Insert into Login (UserName, Password, Role) " + 
       "values(@UserName,@Password,@Role)"; 
com.CommandText = sqlCmd; 
com.CommandType = CommandType.Text; // <-- SQL doesn't have to guess! 

看看這是否有所作爲。