[英]Error converting data type varchar to numeric c# Application
我有一个 SQL Server 数据库表,我正在使用我的 C# 应用程序连接到 SQL,查看该表并将值返回到表单上的文本框中。 但是,当我单击按钮时,出现以下错误:
将数据类型 varchar 转换为数字 C# 应用程序时出错
我的代码在这里:
private void buttonFilter_Click(object sender, EventArgs e)
{
try
{
using (SqlConnection sqlCon = new SqlConnection(connectionString))
{
sqlCon.Open();
SqlDataAdapter sqlDa = new SqlDataAdapter(string.Format(
"SELECT {0} FROM {1} WHERE {2} = " + SearchBox.Text.ToString(),
ConfigurationManager.AppSettings["SQLFirst3FieldResults"],
ConfigurationManager.AppSettings["SQLTableName"],
ConfigurationManager.AppSettings["SQLSearchColumn"]), sqlCon);
DataTable dtbl = new DataTable();
sqlDa.Fill(dtbl);
debtTypeResult.Text = dtbl.Rows[0][0].ToString();
customerNameResult.Text = dtbl.Rows[0][1].ToString();
customerIDResult.Text = dtbl.Rows[0][2].ToString();
label1.Visible = true;
label2.Visible = true;
label3.Visible = true;
debtTypeResult.Visible = true;
customerNameResult.Visible = true;
customerIDResult.Visible = true;
button1.Visible = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
首先你的代码用引号包围搜索值的最小修正:
SqlDataAdapter sqlDa = new SqlDataAdapter(string.Format(
"SELECT {0} FROM {1} WHERE {2} = '" + SearchBox.Text.ToString() + "'",
ConfigurationManager.AppSettings["SQLFirst3FieldResults"],
ConfigurationManager.AppSettings["SQLTableName"],
ConfigurationManager.AppSettings["SQLSearchColumn"]), sqlCon);
DataTable dtbl = new DataTable();
sqlDa.Fill(dtbl);
然而,这种方法根本不值得推荐,因为
建议您尽可能使用参数。 如果您搜索其中包含单引号的值,则更安全且查询不会中断:
SqlDataAdapter sqlDa = new SqlDataAdapter($"SELECT {ConfigurationManager.AppSettings["SQLFirst3FieldResults"]} FROM {ConfigurationManager.AppSettings["SQLTableName"]} WHERE {ConfigurationManager.AppSettings["SQLSearchColumn"]} = @which", sqlCon);
sqlDa.SelectCommand.Parameters.AddWithValue("@which", SearchBox.Text.ToString());
DataTable dtbl = new DataTable();
sqlDa.Fill(dtbl);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.