C# and SQL SELECT

本文关键字:SELECT SQL and | 更新日期: 2023-09-27 18:35:53

目前我正在做一个关于C#和SQL的项目,我有一个关于SELECT函数的问题,我在网上找不到任何解决方案。

该方案考虑从 C# 到 SQL Server 的搜索查询,并在 C# 的数据网格视图中显示结果。

我使用的是Visual Studio 2008和SQL Server Studio 2008。

在开始这个项目之前,我只是从Visual studio做了一个快速的Windows表单,只做了一个数据网格视图,2个文本框和一个搜索按钮。

在SQL Server,我有一个带有表格DVD的数据库,我想从这个Windows表单中搜索DVD ID和名称。

我从DVD ID开始并实现了以下代码:

private void btnView_Click(object sender, EventArgs e)
{
   SqlConnection c = new SqlConnection(@"Data Source=GILBERTB-PC'SQLEXPRESS;Initial Catalog=DVDandGameBooking;Integrated Security=True"); 
   DataTable t = new DataTable();
   string sqlString = "SELECT * From DVD where Id ='" + txtID.Text+ "'";
   SqlDataAdapter dt = new SqlDataAdapter(sqlString, c);        
   dt.Fill(t);
   dtgv1.DataSource = t;
}

它奏效:)

然后我将代码更改为

string sqlString = "SELECT * From DVD where Name ='" + txtName.Text+ "'";

这样我就可以使用DVD的名称进行搜索,但是当我启动程序并使用名称进行搜索时,它只显示一个空白数据库

还有什么方法可以更改代码,以便我可以使用ID或名称进行搜索?

感谢您的帮助和时间

C# and SQL SELECT

想法:

  1. 确保 txtName.Text 具有值
  2. 尝试使用企业管理器、蟾蜍或其他查询工具进行 SQL 选择。 你得到什么?
  3. 尝试使用LIKE作为下面的示例
  4. 最坏的情况是,也许检查表的排序规则,也许它设置为"区分大小写"文本匹配。

ID 和名称:

SELECT * FROM DVD
      WHERE Id=[ID Value]
      OR Name LIKE '%[Name Value]%'
或者

你可以将SQLCommand与如下参数一起使用:

SqlConnection c = new SqlConnection(@"Data Source=GILBERTB-PC'SQLEXPRESS;Initial Catalog=DVDandGameBooking;Integrated Security=True");
string queryString = "SELECT * From DVD where Id = @id";
var paramId = new SqlParameter("id", SqlDbType.VarChar);
var query = new SqlCommand(queryString, c);
query.Parameters.Add(paramId);

如果你真的想使用 SQLDataAdapter,你可以将 select 命令设置为我上面写的命令。否则,您可以使用 dataReader 并循环访问结果。

此外,使用此类参数可使查询更易于阅读,并使 SQL 注入更安全。应始终考虑它。

Edit1:如果您想使用 Id 或 Name 进行搜索,您只需制作 2 个参数,并在 2 之间放置一个OR,并且可以在查询中使用关键字 like 而不是 =。如果可以null值,则可能需要动态构建查询,具体取决于未null的值。