[英]C# access Database update from texbox
我正在做一個數據庫項目,程序的很大一部分已經完成,但遇到了一個問題。 我有一個名為員工的數據庫,我在文本框中使用 emp_ID 進行搜索,並從數據庫中獲取屬性(姓名、姓氏)並將它們寫入另一個文本框。 當我單擊保存按鈕時,我希望它從文本框中更新姓名和姓氏。 這是我的代碼看起來不錯但不起作用。 偽代碼:從表 Employee 更新姓名和姓氏,其中 ID = emp_ID
錯誤:
輸入字符串的格式不正確。
我的代碼:
private void button1_Click(object sender, EventArgs e)
{
String id = searchTB.Text;
string Name = nametb.Text;
using (var connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Employee.accdb"))
using (var command = connection.CreateCommand())
{
command.CommandText = "select *from Employee where [emp_ID]= " + id + " ";
command.Parameters.AddWithValue("Name", int.Parse(nametb.Text));
command.Parameters.AddWithValue("Surname", int.Parse(surnametb.Text));
connection.Open();
var reader = command.ExecuteReader();
while (reader.Read())
{
nametb.Text = reader["Name"].ToString();
surnametb.Text = reader["Surname"].ToString();
}
}
}
需要改變的東西:
String id = searchTB.Text;
成為string id = searchTB.Text;
"select *from
成為"select * from
"select *from Employee where [emp_ID]= " + id + " "
成為where emp_Name = @Name and emp_Surname = @Surname
的地方,因為您按姓名和姓氏搜索。"Name", int.Parse(nametb.Text)
你不能將名稱解析為 integer最后,使用同一個按鈕搜索和編輯是錯誤的(閱讀SOLID的SRP原理)
所以,最初,你需要類似下面的代碼(我沒有測試它,因為我沒有訪問但看起來不錯)。
請注意,我不了解您的數據庫,因此您應該輸入正確的字段名稱
對於查詢端:
private void button1_Click(object sender, EventArgs e)
{
// Search Button -- Query
string name = nameTb.Text;
string surName = surNameTb.Text;
var connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Employee.accdb");
var query = new OleDbCommand("select emp_ID, emp_Name, emp_Surname from Employee where emp_Name = @Name, emp_Surname = @Surname", connection);
query.Parameters.AddWithValue("@Name", name);
query.Parameters.AddWithValue("@Surname", surName);
connection.Open();
OleDbDataReader reader = query.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
idTb.Text = reader["emp_ID"].ToString(); //<<=== this is the primary key that never updated
nameTb.Text = reader["emp_Name"];
surNameTb.Text = reader["emp_Surname"];
}
}
connection.Close();
reader.Close();
query.Dispose();
}
對於更新命令端(另一個按鈕):
private void button2_Click(object sender, EventArgs e)
{
// Update Button -- Command
string id = idTb.Text;
string name = nameTb.Text;
string surName = surNameTb.Text;
var connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Employee.accdb");
OleDbCommand command = new OleDbCommand("update Employee set emp_Name = @Name, emp_Surname = @Surname where emp_ID = @Id", connection);
command.Parameters.AddWithValue("@Id", id);
command.Parameters.AddWithValue("@Name", name);
command.Parameters.AddWithValue("@Surname", surName);
command.ExecuteNonQuery();
connection.Close();
command.Dispose();
}
在你學習的同時,有一個好的開始:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.