如何更新数据库记录 vs12 C#
How to update database record vs12 C#
您好,我在为我的网站制作更新按钮时遇到问题我已经尝试了很多方法,但似乎无法弄清楚。我希望用户输入他们希望更新的客户端的 ID 号,然后根据他们希望更改的列填写文本框。
这是我的代码:
private static OleDbConnection GetConnection()
{
String connString;
connString = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\Users\Wisal\Documents\Visual Studio 2012\WebSites\WebSite3\registration-Db.mdb";
return new OleDbConnection(connString);
}
protected void clientUpdate_Click(object sender, EventArgs e)
{
OleDbConnection cn = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:/Users/Wisal/Documents/Visual Studio 2012/WebSites/WebSite3\registration-Db.mdb");
cn.Open();
OleDbCommand cmd = new OleDbCommand("(Update client set id = " + txt_id.Text + " ,[name] ='" + txt_name.Text + " ,[password] ='" + txt_password.Text +" where id= '" + txt_id.Text + "",cn);
cmd.ExecuteNonQuery();
cn.Close();
}
}
我也试过这个:
private static OleDbConnection GetConnection()
{
String connString;
connString = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\Users\Wisal\Documents\Visual Studio 2012\WebSites\WebSite3\registration-Db.mdb";
return new OleDbConnection(connString);
}
protected void clientUpdate_Click(object sender, EventArgs e)
{
OleDbConnection myConnection = GetConnection();
myConnection.Open();
OleDbCommand cmd = new OleDbCommand("(Update client set id = " + txt_id.Text + " ,[name] ='" + txt_name.Text + " ,[password] ='" + txt_password.Text +" where id= '" + txt_id.Text + "",myConnection);
cmd.ExecuteNonQuery();
myConnection.Close();
}
}
有了这个,我得到了 "Syntax error in union query."
我也试过这个:
protected void clientUpdate_Click(object sender, EventArgs e)
{
OleDbConnection myConnection = GetConnection();
myConnection.Open();
OleDbCommand cmd = new OleDbCommand("Update client set [name] = ? [password] = ? where id= ?", myConnection);
cmd.Parameters.AddWithValue("", txt_id.Text);
cmd.Parameters.AddWithValue("", txt_name.Text);
cmd.Parameters.AddWithValue("", txt_password.Text);
cmd.ExecuteNonQuery();
myConnection.Close();
}
}
你的单引号不匹配?
您的 id
字段是 int 还是 string 类型?我假设它是int类型的。而且您不需要更新 id
字段,因为它与 where 子句中的值相同。
试试这个:
OleDbCommand cmd = new OleDbCommand("Update client set [name] ='" + txt_name.Text + "' ,[password] ='" + txt_password.Text +"' where id= " + txt_id.Text,myConnection);
我稍微更新了你的代码:
private static OleDbConnection GetConnection()
{
var connString = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\Users\Wisal\Documents\Visual Studio 2012\WebSites\WebSite3\registration-Db.mdb";
return new OleDbConnection(connString);
}
protected void clientUpdate_Click(object sender, EventArgs e)
{
using(var myConnection = GetConnection())
{
myConnection.Open();
// You should be using a parameterized query here
using (var cmd = new OleDbCommand("Update client set [name] = ?, [password] = ? where id = ?", myConnection))
{
cmd.Parameters.AddWithValue("name", txt_name.Text);
cmd.Parameters.AddWithValue("password", txt_password.Text);
cmd.Parameters.AddWithValue("id", txt_id.Text);
cmd.ExecuteNonQuery();
}
}
}
- 在一次性物品周围使用方块
- 检查您的 SQL,如果这是您的主键,则无需更新 id 并注意单引号。请改用参数化查询。
您好,我在为我的网站制作更新按钮时遇到问题我已经尝试了很多方法,但似乎无法弄清楚。我希望用户输入他们希望更新的客户端的 ID 号,然后根据他们希望更改的列填写文本框。
这是我的代码:
private static OleDbConnection GetConnection()
{
String connString;
connString = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\Users\Wisal\Documents\Visual Studio 2012\WebSites\WebSite3\registration-Db.mdb";
return new OleDbConnection(connString);
}
protected void clientUpdate_Click(object sender, EventArgs e)
{
OleDbConnection cn = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:/Users/Wisal/Documents/Visual Studio 2012/WebSites/WebSite3\registration-Db.mdb");
cn.Open();
OleDbCommand cmd = new OleDbCommand("(Update client set id = " + txt_id.Text + " ,[name] ='" + txt_name.Text + " ,[password] ='" + txt_password.Text +" where id= '" + txt_id.Text + "",cn);
cmd.ExecuteNonQuery();
cn.Close();
}
}
我也试过这个:
private static OleDbConnection GetConnection()
{
String connString;
connString = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\Users\Wisal\Documents\Visual Studio 2012\WebSites\WebSite3\registration-Db.mdb";
return new OleDbConnection(connString);
}
protected void clientUpdate_Click(object sender, EventArgs e)
{
OleDbConnection myConnection = GetConnection();
myConnection.Open();
OleDbCommand cmd = new OleDbCommand("(Update client set id = " + txt_id.Text + " ,[name] ='" + txt_name.Text + " ,[password] ='" + txt_password.Text +" where id= '" + txt_id.Text + "",myConnection);
cmd.ExecuteNonQuery();
myConnection.Close();
}
}
有了这个,我得到了 "Syntax error in union query."
我也试过这个:
protected void clientUpdate_Click(object sender, EventArgs e)
{
OleDbConnection myConnection = GetConnection();
myConnection.Open();
OleDbCommand cmd = new OleDbCommand("Update client set [name] = ? [password] = ? where id= ?", myConnection);
cmd.Parameters.AddWithValue("", txt_id.Text);
cmd.Parameters.AddWithValue("", txt_name.Text);
cmd.Parameters.AddWithValue("", txt_password.Text);
cmd.ExecuteNonQuery();
myConnection.Close();
}
}
你的单引号不匹配?
您的 id
字段是 int 还是 string 类型?我假设它是int类型的。而且您不需要更新 id
字段,因为它与 where 子句中的值相同。
试试这个:
OleDbCommand cmd = new OleDbCommand("Update client set [name] ='" + txt_name.Text + "' ,[password] ='" + txt_password.Text +"' where id= " + txt_id.Text,myConnection);
我稍微更新了你的代码:
private static OleDbConnection GetConnection()
{
var connString = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\Users\Wisal\Documents\Visual Studio 2012\WebSites\WebSite3\registration-Db.mdb";
return new OleDbConnection(connString);
}
protected void clientUpdate_Click(object sender, EventArgs e)
{
using(var myConnection = GetConnection())
{
myConnection.Open();
// You should be using a parameterized query here
using (var cmd = new OleDbCommand("Update client set [name] = ?, [password] = ? where id = ?", myConnection))
{
cmd.Parameters.AddWithValue("name", txt_name.Text);
cmd.Parameters.AddWithValue("password", txt_password.Text);
cmd.Parameters.AddWithValue("id", txt_id.Text);
cmd.ExecuteNonQuery();
}
}
}
- 在一次性物品周围使用方块
- 检查您的 SQL,如果这是您的主键,则无需更新 id 并注意单引号。请改用参数化查询。