使用 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);
            }
        }

使用 Visual Studio 的 C# 中的 SQL 查询

看看你的查询。问题是您引用了表名,因此它被视为字符串文字而不是表名

"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