2010-07-31 126 views
0
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Samples\\login.mdb"; 
String uname, pass; 
uname = textBox1.Text; 

pass = textBox2.Text; 
OleDbConnection myConnection = new OleDbConnection(connectionString); 
myConnection.Open(); 

String query = "insert into LOGIN_TABLE (UserName, Password) VALUES ('" + 
    textBox1.Text.ToString() + "','" + textBox2.Text.ToString() + "') "; 


OleDbCommand myCommand = new OleDbCommand(); 
myCommand.CommandText = query; 
OleDbParameter myParm = myCommand.Parameters.Add("@uname", OleDbType.VarChar, 50); 
myParm.Value = textBox1.Text; 

myParm = myCommand.Parameters.Add("@pass", OleDbType.VarChar, 50); 
myParm.Value = textBox2.Text; 

myCommand.ExecuteNonQuery(); 
myConnection.Close(); 
+1

'查询'只是**请求** SQL注入...你意识到你没有使用参数,是吗? – 2010-07-31 06:48:01

回答

3

您还没有告诉您的OleDbCommand要使用哪个数据库连接。

尝试这样做,而不是:

OleDbCommand myCommand = new OleDbCommand(query, myConnection); 

然后不设置在下一行的CommandText财产。

更新:马克是正确的,你甚至没有使用你的参数,因为你的查询定义本身没有借给什么叫做一个准备好的声明。试试这个:

string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Samples\\login.mdb"; 

using (OleDbConnection myConnection = new OleDbConnection(connectionString)) 
{ 
    myConnection.Open(); 

    string query = "INSERT INTO LOGIN_TABLE (UserName, Password) VALUES (?, ?)"; 

    OleDbCommand myCommand = new OleDbCommand(query, myConnection); 

    myCommand.Parameters.Add("UserName", OleDbType.VarChar, 50); 
    myCommand.Parameters.Add("Password", OleDbType.VarChar, 50); 

    myCommand.Parameters[0].Value = textBox1.Text; 
    myCommand.Parameters[1].Value = textBox2.Text; 

    myCommand.Prepare(); 
    myCommand.ExecuteNonQuery(); 
} 

我摆脱了一些不必要的任务,并设置了一些不同的命令参数。试试看,如果能解决您的问题,请告诉我。

+0

再次给插入 – 2010-07-31 05:49:18

+0

的语法错误尝试字符串查询=“插入到LOGIN_TABLE(用户名,密码)VALUES(@用户名,@密码)”;还要更改myCommand.Parameters.Add(“UserName”,OleDbType.VarChar,50); into myCommand.Parameters.Add(“@ Username”,OleDbType.VarChar,50); – MHTri 2012-04-19 13:53:48

相关问题