c# - System.Data.SqlClient.SqlException: '无效的列名'"
问题描述
我在 dataGridView 单元格双击事件中编写了下面的代码,并带有全行选择,所以每当我双击该行时,它应该反馈给文本框和组合框。
但我收到错误“System.Data.SqlClient.SqlException: 'Invalid column name 'new1'.'”,其中 new 1 是该字段中的性别。而不是阅读 combobox2 的价值,而是阅读 genderm
SqlConnection conn = new SqlConnection(config.constring);
SqlCommand command = new SqlCommand("SELECT rangemaster.code as
code, rangemaster.genderm as [Male], rangemaster.genderf as [Female],
rangemaster.age as [Age], rangemaster.agerange as [Age Range],
rangemaster.commonrange as [Common Range], testmaster.testname as
[Test Name] FROM rangemaster LEFT JOIN testmaster ON rangemaster.code =
testmaster.code where rangemaster.code = " +
dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + "", conn);
conn.Open();
using (SqlDataReader reader = command.ExecuteReader())
while (reader.Read())
{
name4.Text = reader[0].ToString();
textBox4.Text = reader[1].ToString();
textBox3.Text = reader[2].ToString();
comboBox1.SelectedIndex = Convert.ToInt32(reader[3]) - 1;
textBox5.Text = reader[4].ToString();
textBox1.Text = reader[5].ToString();
comboBox2.SelectedIndex = Convert.ToInt32(reader[6]) - 1;
}
conn.Close();
解决方案
问题是您缺少引号。无论如何,正确的解决方案是使用 SQL 参数,例如:
SqlCommand command = new SqlCommand("SELECT rangemaster.code as ... where rangemaster.code = @param");
command.Parameters.Add("@param",SQlDbType.Nvarchar).Value = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
推荐阅读
- python - 将元组返回到字符串中,为什么它只返回元组列表的第一个索引?
- python - 从 jinja 模板中提取变量
- python - 在 Kivy 中使用 Build 时出现黑屏
- shell - grep 中包含的空文件:忽略它们或使用参数/管道将它们过滤掉更有效?
- python - AttributeError:模块“matplotlib.cbook”在 Networkx 中没有属性“is_numlike”
- twilio - Twilio 函数:如果录制以挂断结束,则忽略录制回调的 TwiML 响应
- python - Python3、FastAPI 和 Firebase:无法从 firebase 成功执行 ref.get()
- flutter - 使用 Flutter 和 Firebase 从 Facebook 登录应用程序中提取数据
- python - 如何在不使用多个进程的情况下将 python 对象保存在 RAM 中?
- postgresql - TypeORM - JSONB 数组 LIKE 值中的对象