2013-10-23 45 views
0

這裏我向表(註冊)中添加5個數據,並且它包含6個列,其中ID是主鍵的縮進。但我得到一個異常,在「myCommand.ExecuteReader();」一個或多個必需的參數沒有值同時嘗試插入其他數據列。插入查詢異常「沒有爲一個或多個必需參數給出值」

public void SubmitClick(Object sender, EventArgs e) 
{ 
    insertdata(FN.Text,LN.Text,DOB.Text,mailid.Text,username.Text); 
} 
public void insertdata(string fname, string sname, string dob ,string email ,string uname) 
{ 

    //Connection string for the datbase 
    string database = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\Users\atchutharamkj\documents\visual studio 2010\Projects\WebApplication1\WebApplication1\App_Data\Database3.accdb;Persist Security Info=True"; 
    OleDbConnection myConn = new OleDbConnection(database); 
    string queryStr = @"Insert into Registration Values (fname , sname, dob , email, uname)"; 
    OleDbCommand myCommand = new OleDbCommand(queryStr, myConn); 
    myCommand.Connection.Open(); 
    myCommand.ExecuteReader(); 
    myCommand.Connection.Close(); 

} 
+0

您沒有將參數傳遞給'Command' – Satpal

回答

4

您的查詢是錯誤的,這種方式你沒有傳遞任何信息。

使用參數化這樣的疑問:

public void SubmitClick(Object sender, EventArgs e) 
{ 
    insertdata(FN.Text,LN.Text,DOB.Text,mailid.Text,username.Text); 
} 

public void insertdata(string fname, string sname, string dob ,string email ,string uname) 
{ 
    string database = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\Users\atchutharamkj\documents\visual studio 2010\Projects\WebApplication1\WebApplication1\App_Data\Database3.accdb;Persist Security Info=True"; 
    OleDbConnection myConn = new OleDbConnection(database); 

    string queryStr = @"Insert into Registration(FirstName,LastName,DOB,[E-Mail],Username) Values (?, ?, ?, ?, ?)"; 

    OleDbCommand myCommand = new OleDbCommand(queryStr, myConn); 
    myCommand.Parameters.AddWithValue("@fname", fname); 
    myCommand.Parameters.AddWithValue("@sname", sname); 
    myCommand.Parameters.AddWithValue("@dob", dob); 
    myCommand.Parameters.AddWithValue("@email", email); 
    myCommand.Parameters.AddWithValue("@uname", uname); 

    myCommand.Connection.Open(); 
    myCommand.ExecuteNonQuery(); 
    myCommand.Connection.Close(); 
} 

更多參數傳遞到OLEDB看到MSDN

+0

我也試過這個參數方法,但是我得到一個異常,因爲「查詢值和目標字段的數目不一樣」。但我相信我有6列(ID,名字,姓氏,出生日期,電子郵件,用戶名)和身份證是身份證,所以我不包括在查詢中。 – Ram

+0

這意味着'Registration'表的列數多於您提供的值。你可以明確地寫入你的查詢列名,比如'Insert into Registration(FirstName,SureName,Dob,Email,Username)Values(?,?,?,?,?)'。 – gzaxx

+0

'string queryStr = @「插入註冊(名字,姓氏,出生日期,電子郵件,用戶名)值(?,?,?,?,?)」;'我改變了這樣的查詢,但它告訴有語法INSERT INTO語句中的錯誤。 – Ram

相關問題