[英]Basic help with SQLite in C# needed - returning strings or ints from a query
我正在将Microsoft Visual C#2008 Express Edition与SqlLite一起使用。 我可以成功打开数据库,并使用C#代码将条目添加到表中。
在检索数据时,我遇到了一些问题,一直在互联网上搜索有关如何做这些基本事情的基本教程信息。
这是我的代码...(在我打开与数据库的连接后,这里称为“ conn”):
SQLiteCommand cmd = new SQLiteCommand(conn);
cmd.CommandText = "select myField1,myField2 from myTable where myField3 = '" + tempstring + "';";
cmd.CommandType = CommandType.Text;
SQLiteDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
string tmp = reader.GetString(0);
System.Console.WriteLine(" my output = " + tmp);
}
当我执行此操作时...我没有错误,因为在最后一行没有任何输出,因此看起来while循环根本没有执行。
我是这些东西的初学者...我想念的是什么?是否有很好的网络资源可用来学习这些基本知识? 我对SQL本身很满意...只是没有像这样集成在C#中...
首先,在while (reader.Read());
删除行尾有害的分号while (reader.Read());
...!
在我看来,这是正确的。 属性reader.HasRows
是否对您的查询返回true?
需要注意的一些附带问题是:
回答有关如何编写参数化查询的问题:
cmd.CommandText = "select myField1,myField2 from myTable where myField3 = @tempString;";
SQLiteParameter param = new SQLiteParameter("@tempString");
cmd.Parameters.Add(param);
// you can modify that value without touching the sql statement (which means you could cache the above command)
param.Value = tempstring;
SQLiteDataReader reader = cmd.ExecuteReader();
[...]
SQLite中的参数可以有几种形式,您可以在这里找到。
有关参数化查询的更多信息,请参见此处 。
好人,Alex。
除此之外,由于您是从sqlite开始的(可能要从标记中删除第二个L),请记住,sqlite并不能真正保证数据库级别的数据类型安全。
并不是为了使您摆脱Sqlite问题,但是如果您对C#中嵌入的Sqlite查询遇到舒适问题,则可以尝试将NHibernate与Fluent NHibernate结合使用。 这些技术为数据库(包括Sqlite)提供了出色的数据访问机制。
NHibernate向Sqlite的请求非常快,您不必担心Sqlite的某些特质。 如果您使用NHibernate正确构建了数据访问层,那么您应该能够迅速升级到更强大的数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.