下面我提供了我的数据库模式,当前插入的数据库数据(只有一条记录)和我正在运行的代码。这是一个非常简单的设置,但不返回数据库中的一条记录,它不返回任何内容。任何人有任何想法为什么?我在这里我束手无策......极其简单的SQLite查询不会返回预期的
表:分包商
列:在(名称类型)格式如下。
ID guid,
BusinessName varchar(50),
Address varchar(200),
City varchar(50),
State varchar(50),
ZipCode varchar(50),
Contact varchar(50),
Phone varchar(50),
Fax varchar(50),
Email varchar(200),
GLOPolicy bit,
GLOLimit bigint,
GLOExpiration datetime,
ALPolicy bit,
ALLimit bigint,
ALExpiration datetime,
WCPolicy bit,
WCLimit bigint,
WCExpiration datetime,
ULPolicy bit,
ULLimit bigint,
ULExpiration datetime,
Notes varchar(15000)
=====
我在我的数据库中的一个记录,如下所示。
ID "7b143c19-ad66-46ad-b587-db0bee98cf1e"
BusinessName "1"
Address "1"
City "1"
State "1"
ZipCode "1"
Contact NULL
Phone NULL
Fax NULL
Email NULL
GLOPolicy False (0)
GLOLimit NULL
GLOExpiration NULL
ALPolicy False (0)
ALLimit NULL
ALExpiration NULL
WCPolicy False (0)
WCLimit NULL
WCExpiration NULL
ULPolicy False (0)
ULLimit NULL
ULExpiration NULL
Notes NULL
===== * 我试图下面的查询,并没有返回,当它显然应该返回的唯一记录,如上图所示。 *
String ID = "7b143c19-ad66-46ad-b587-db0bee98cf1e";
DataTable dt = sqliteQuery.selectFromDatabase("*", "WHERE ID = '" + ID + "'");
而对于上述方法的代码是...
public DataTable selectFromDatabase(String column, String filter)
{
string SQL = "SELECT " + column + " FROM SUBCONTRACTOR " + filter;
SQLiteCommand cmd = new SQLiteCommand(SQL);
cmd.Connection = connection;
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
da.Fill(ds);
DataTable dt = ds.Tables[0];
return dt;
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
return null;
}
finally
{
cmd.Dispose();
connection.Close();
}
}
首先尝试选择没有过滤。将谓词设置为WHERE 1 = 1(总是为true)而不是筛选器,以确保获得所有行。如果你不这样做,那不是错误的查询。此外,您的列类型是一个GUID,但您的查询使用字符串值。您可能需要转换。 – 2010-12-19 06:33:38
将筛选器设置为1 = 1时,它将返回数据库中的单个记录,因为它应该如此。假设有什么类型的转换?我在做假设时,所有事情都是以字符串的形式传递的......是不是这种情况?如果不是,你知道这样的转换吗? – CODe 2010-12-19 06:35:12