System.Data.SqlClient.SqlException: "Invalid column name 'e'." |数据库错误
System.Data.SqlClient.SqlException: "Invalid column name 'e'." | Error with Database
我正在为我的项目使用数据库数据,当我在 Textbox1 中键入一个字母时,应用程序崩溃并出现错误:
System.Data.SqlClient.SqlException:“无效的列名称 'e'”。“=13=]
数据库名称是 Table,带有“Id”和“altitudes”
Id 是一个 varchar,而 altitudes 是一个 nchar。
这就是我希望它的工作方式:
在 name.Text 中输入名称,在数据库中搜索该名称并将分配的高度粘贴到 altitude.Text 中。
海拔是数字,名字是数据库中的字母。
我的代码哪里出错了? (数据源故意留空)
{
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 });
我正在为我的项目使用数据库数据,当我在 Textbox1 中键入一个字母时,应用程序崩溃并出现错误:
System.Data.SqlClient.SqlException:“无效的列名称 'e'”。“=13=]
数据库名称是 Table,带有“Id”和“altitudes” Id 是一个 varchar,而 altitudes 是一个 nchar。
这就是我希望它的工作方式: 在 name.Text 中输入名称,在数据库中搜索该名称并将分配的高度粘贴到 altitude.Text 中。 海拔是数字,名字是数据库中的字母。
我的代码哪里出错了? (数据源故意留空)
{
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 });