使用 Visual Studio 的 C# 中的 SQL 查询
本文关键字:中的 SQL 查询 Visual Studio 使用 | 更新日期: 2023-09-27 18:30:46
问题出在查询select
它不起作用异常发生在textBox1.文本附近:
private void button1_Click(object sender, EventArgs e)
{
try
{
con.Open();
SqlDataAdapter sda = new SqlDataAdapter("select * From '"+textBox1.Text+"'", con);
sda.SelectCommand.ExecuteNonQuery();
DataTable dtable = new DataTable();
sda.Fill(dtable);
BindingSource bSource = new BindingSource();
bSource.DataSource = dtable;
dataGridView1.DataSource = bSource;
sda.Update(dtable);
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
看看你的查询。问题是您引用了表名,因此它被视为字符串文字而不是表名
"select * From '"+textBox1.Text+"'"
^... Here
同样,您使用的是ExecuteNonQuery()
而不是ExecuteReader()
您的查询容易进行SQL注入,我认为您无法将表名作为参数传递给DB。如果这是您的真正要求,请考虑使用Dynamic Query
。使用 s 存储过程的示例,例如
create procedure usp_selectData(@tblname nvarchar(100))
as begin
declare @sql nvarchar(200);
if (exists (select * from information_schema.tables
where table_name = @tblname))
begin
set @sql = 'select * from ' + @tblname;
exec(@sql);
end
end