System.Data.SqlClient.SqlException: "Invalid column name 'e'." |数据库错误



我的项目使用数据库数据,当我在Textbox1中键入一个字母时,应用程序崩溃,并出现错误:

System.Data.SqlClient.SqlException:"列名"e"无效">

数据库名称为表;Id";以及";海拔高度";Id是varchar,海拔是nchar。

这就是我想要的工作方式:在名称中键入名称。文本,在数据库中搜索名称,并在海拔高度中粘贴指定的海拔高度。文本Altitudes是数字,Names是数据库中的字母。

我的代码中的错误在哪里?(数据源为空白(

{
String source = @"Data Source=";
SqlConnection con = new SqlConnection(source);
con.Open();
String sqlSelectQuery = "SELECT * FROM [Table] WHERE ID ="+char.Parse(name.Text);
SqlCommand cmd = new SqlCommand(sqlSelectQuery, con);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
altitude.Text = (dr["altitudes"].ToString());
}
con.Close();
}

您永远不应该连接输入来创建SQL。它非常脆弱,容易受到SQL注入和i18n/l10n问题(值格式(的影响。很多不好的事情。

解决方案应该始终是:参数。

例如:

const string sqlSelectQuery = "SELECT * FROM [Table] WHERE ID = @id";
using SqlCommand cmd = new SqlCommand(sqlSelectQuery, con);
cmd.Parameters.AddWithValue("@id", name.Text);
// Etc

或者更容易使用Dapper:这样的工具

var alt = con.QuerySingleOrDefault<string>(
"SELECT altitudes FROM [Table] WHERE ID = @id",
new { id = name.Text });

最新更新