繁体   English   中英

需要C#中的SQLite基本帮助-从查询返回字符串或整数

[英]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?

需要注意的一些附带问题是:

  1. 确保通过使用{}块包装对象来处置SQL资源。
  2. 考虑使用参数化查询,而不是直接在SELECT语句中插入查询参数。

回答有关如何编写参数化查询的问题:

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查询遇到舒适问题,则可以尝试将NHibernateFluent NHibernate结合使用。 这些技术为数据库(包括Sqlite)提供了出色的数据访问机制。

NHibernate向Sqlite的请求非常快,您不必担心Sqlite的某些特质。 如果您使用NHibernate正确构建了数据访问层,那么您应该能够迅速升级到更强大的数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM