C# 从 AccessDatabase 中删除一行/将 String 转换为 Int
C# Deleting a Row from AccessDatabase / Converting String to Int
我是一名新手程序员,正在尝试使用 "DELETE FROM " 查询从 AccessDatabase 中删除一行。它需要将字符串转换为 Int,这就是问题所在
这是我 运行ning 的代码:
private void BtnDelete_Click(object sender, EventArgs e)
{
OleDbConnection Conn = new OleDbConnection();
Conn.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\HoliPlanData.accdb;Persist Security Info=False";
try
{
Conn.Open();
String Query = "DELETE * FROM [Employee] WHERE PayrollNo = @PayrollNo";
OleDbCommand DoDelete = new OleDbCommand(Query, Conn);
String PayrollNo = PassPayrollNo;
int PayRowNum = 0;
bool isValid = int.TryParse(PassPayrollNo, out PayRowNum);
if (isValid)
{
DoDelete.Parameters.AddWithValue("@PayrollNo", PayRowNum);
DoDelete.ExecuteNonQuery();
MessageBox.Show("Success");
Conn.Close();
}
else
{
MessageBox.Show("Could not convert to string");
Conn.Close();
}
}
当我 运行 进入 Else 子句时,无法转换为字符串
怎么了?为什么?
非常感谢任何帮助,谢谢。
问题出在参数@PayrollNo 上,您必须确保变量 PassPayrollNo 与 table 中的 PayrollNo 类型相同。如果您显示您正在使用的类型,我们可以尝试为您提供更多帮助。
尝试传递 int 类型参数:
int payrowNum = 0;
bool isValid = int.TryParse(PassPayrollNo, out payrowNum);
if(isValid)
{
string sQuery = "DELETE * FROM [Employee] WHERE PayrollNo = @PayrollNo";
OleDbCommand DoDelete = new OleDbCommand(sQuery, Conn);
DoDelete.Parameters.AddWithValue("@PayrollNo", payrowNum);
int rowsAffected = DoDelete.ExecuteNonQuery();
if(rowsAffected>0)
{
MessageBox.Show("Success");
}
Conn.Close();
}
我是一名新手程序员,正在尝试使用 "DELETE FROM " 查询从 AccessDatabase 中删除一行。它需要将字符串转换为 Int,这就是问题所在
这是我 运行ning 的代码:
private void BtnDelete_Click(object sender, EventArgs e)
{
OleDbConnection Conn = new OleDbConnection();
Conn.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\HoliPlanData.accdb;Persist Security Info=False";
try
{
Conn.Open();
String Query = "DELETE * FROM [Employee] WHERE PayrollNo = @PayrollNo";
OleDbCommand DoDelete = new OleDbCommand(Query, Conn);
String PayrollNo = PassPayrollNo;
int PayRowNum = 0;
bool isValid = int.TryParse(PassPayrollNo, out PayRowNum);
if (isValid)
{
DoDelete.Parameters.AddWithValue("@PayrollNo", PayRowNum);
DoDelete.ExecuteNonQuery();
MessageBox.Show("Success");
Conn.Close();
}
else
{
MessageBox.Show("Could not convert to string");
Conn.Close();
}
}
当我 运行 进入 Else 子句时,无法转换为字符串
怎么了?为什么? 非常感谢任何帮助,谢谢。
问题出在参数@PayrollNo 上,您必须确保变量 PassPayrollNo 与 table 中的 PayrollNo 类型相同。如果您显示您正在使用的类型,我们可以尝试为您提供更多帮助。
尝试传递 int 类型参数:
int payrowNum = 0;
bool isValid = int.TryParse(PassPayrollNo, out payrowNum);
if(isValid)
{
string sQuery = "DELETE * FROM [Employee] WHERE PayrollNo = @PayrollNo";
OleDbCommand DoDelete = new OleDbCommand(sQuery, Conn);
DoDelete.Parameters.AddWithValue("@PayrollNo", payrowNum);
int rowsAffected = DoDelete.ExecuteNonQuery();
if(rowsAffected>0)
{
MessageBox.Show("Success");
}
Conn.Close();
}