我正在尝试选择UserID,FirstName,SecondName,PicturePath(来自Pictures表)LIKE FirstName(string search = textbox.text)
OdbcCommand("SELECT UserID, FirstName, SecondName, p.PicturePath FROM User LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE FirstName LIKE '%" + search + "%' ORDER BY UserID DESC", cn))
我的语法搞砸了。
我的表结构:
答案 0 :(得分:1)
OdbcCommand("SELECT UserID, FirstName, SecondName, p.PicturePath FROM User LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE FirstName LIKE '%" + search + "%' ORDER BY UserID DESC", cn))
答案 1 :(得分:1)
如果您要使用相关名称,通常应该始终使用它们。它可以帮助程序员,即使数据库不需要它。
SELECT u.UserID, u.FirstName, u.SecondName, p.PicturePath
FROM User u
LEFT JOIN Pictures p ON (p.UserID = u.UserID)
WHERE u.FirstName LIKE '%" + search + "%' ORDER BY u.UserID DESC
重新格式化单行,引用它并将其插入。它可能会克服语法问题。不知道它是否会给你你想要的结果。
当你无法使用这样的东西时,从最简单的开始,然后从中构建。我自己也会遵循这个顺序。 (如果你把枪放在我头上,让我连接SQL。)
"SELECT u.UserID, u.FirstName, u.SecondName
FROM User u;"
--
"SELECT u.UserID, u.FirstName, u.SecondName
FROM User u
WHERE u.FirstName LIKE '%Cat%';"
--
"SELECT u.UserID, u.FirstName, u.SecondName
FROM User u
WHERE u.FirstName LIKE " + "'%Cat%';"
--
"SELECT u.UserID, u.FirstName, u.SecondName
FROM User u
WHERE u.FirstName LIKE '%" + "Cat" + "%';"
--
SELECT u.UserID, u.FirstName, u.SecondName
FROM User u
WHERE u.FirstName LIKE '%" + search + "%';"
--
等等。
答案 2 :(得分:0)
使用%(作为dos *),或_(作为dos?)
快速查看,但您可能需要撤消左连接。
//编辑: 当然,您的搜索字符串需要引用 //结束编辑
问候。 /吨
答案 3 :(得分:0)
首先,您应该使用参数,这样您就不必担心SQL注入。所以我会做这样的事情:
using (System.Data.Odbc.OdbcConnection connect = new System.Data.Odbc.OdbcConnection("Connection String"))
{
using (System.Data.Odbc.OdbcCommand command = connect.CreateCommand())
{
string sql = "SELECT u.UserID, u.FirstName, u.SecondName, p.PicturePath FROM User u " +
"LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE u.FirstName LIKE '%' + @search + '%' " +
"ORDER BY u.UserID DESC";
command.CommandText = sql;
command.CommandType = System.Data.CommandType.Text;
command.Parameters.AddWithValue("@search", searchValue);
using (System.Data.Odbc.OdbcDataReader dr = command.ExecuteReader())
{
//Do what you need here
}
}
}
希望这有帮助!