C# C和SQL选择
目前我正在做一个关于C和SQL的项目,我有一个关于SELECT函数的问题,我无法在线找到任何解决方案 该场景是通过SQLServer从C搜索查询,并在C的数据网格视图中显示结果 我正在使用VisualStudio2008和SQLServerStudio 2008 在开始这个项目之前,我只是从VisualStudio中快速创建了一个Windows窗体,并创建了一个datagridview、两个文本框和一个搜索按钮 在SQL Server上,我有一个带有表DVD的数据库,我想用DVD ID和名称从此Windows窗体中进行搜索 我从DVD ID开始,实现了以下代码:C# C和SQL选择,c#,C#,目前我正在做一个关于C和SQL的项目,我有一个关于SELECT函数的问题,我无法在线找到任何解决方案 该场景是通过SQLServer从C搜索查询,并在C的数据网格视图中显示结果 我正在使用VisualStudio2008和SQLServerStudio 2008 在开始这个项目之前,我只是从VisualStudio中快速创建了一个Windows窗体,并创建了一个datagridview、两个文本框和一个搜索按钮 在SQL Server上,我有一个带有表DVD的数据库,我想用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或名称进行搜索
感谢您的帮助和时间思考:
确保txtName.Text有一个值
使用企业管理器、Toad或其他查询工具尝试SQL选择。你得到了什么?
尝试使用下面的例子
最坏的情况是,可能检查表的排序规则,可能将其设置为“区分大小写”文本匹配。
ID和名称:
SELECT * FROM DVD
WHERE Id=[ID Value]
OR Name LIKE '%[Name Value]%'
想法:
确保txtName.Text有一个值
使用企业管理器、Toad或其他查询工具尝试SQL选择。你得到了什么?
尝试使用下面的例子
最坏的情况是,可能检查表的排序规则,可能将其设置为“区分大小写”文本匹配。
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或名称进行搜索,只需创建2个参数,并在2个参数之间添加or,还可以在查询中使用关键字like而不是=。如果值可以为null,则可能需要根据不为null的值动态生成查询。或者您可以将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或名称进行搜索,只需创建2个参数,并在2个参数之间添加or,还可以在查询中使用关键字like而不是=。如果值可以为null,则您可能希望根据不为null的值动态生成查询。是否尝试在SQL中执行相同的脚本以查看返回的内容?Bobby Tables将拥有您。user1427266,它最终是否工作?您是否尝试在SQL中执行相同的脚本以查看返回的内容?Bobby Tables将拥有您。user1427266,它最终是否工作?不,您可以-您应该+1你不能——你应该+1.