Csharp/C#教程:C#/Java连接sqlite与使用技巧分享

1)下载sqlitejdbc驱动https://www.xerial.org/maven/repository/artifact/org/xerial/sqlite-jdbc/

2)将下载的驱动加入eclipse项目的builtpath中

3)示例代码:

代码如下:
packagecom.hedalixin;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.Statement;
publicclasstest{
   /**
    *@paramargs
    */
   publicstaticvoidmain(String[]args)throwsException{
       //TODOAuto-generatedmethodstub
       Class.forName(“org.sqlite.JDBC”);
       Connectionconn=DriverManager.getConnection(“jdbc:sqlite:test.db”);
       Statementstat=conn.createStatement();
       stat.executeUpdate(“droptableifexistspeople;”);
       stat.executeUpdate(“createtablepeople(name,occupation);”);
       PreparedStatementprep=conn
               .prepareStatement(“insertintopeoplevalues(?,?);”);
       prep.setString(1,”Gandhi”);
       prep.setString(2,”politics”);
       prep.addBatch();
       prep.setString(1,”Turing”);
       prep.setString(2,”computers”);
       prep.addBatch();
       prep.setString(1,”Wittgenstein”);
       prep.setString(2,”smartypants”);
       prep.addBatch();
       conn.setAutoCommit(false);
       prep.executeBatch();
       conn.setAutoCommit(true);
       ResultSetrs=stat.executeQuery(“select*frompeople;”);
       while(rs.next()){
           System.out.println(“name=”+rs.getString(“name”));
           System.out.println(“job=”+rs.getString(“occupation”));
       }
       rs.close();
       conn.close();
   }
}

2. C#连接sqlite
2.1使用SQLITE.NET
SQLite.NET也是一个数据访问组件,其中的System.Data.SQLite就好像是.NET自带的System.Data.SqlClient一样。里面包含了connection、command等数据访问的常用对象,只是他们前面都有一个前缀sqlite。
1)下载System.Data.SQLite,下载地址https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

2) 通过AddReferences引用SQLiteADO.NET安装目录的bin目录下的System.Data.SQLite.DLL。

3)创建表、读取数据等和Access或MSSQL没多大区别

代码如下:
//创建一个数据库文件
stringdatasource=”h:/test.db”;
System.Data.SQLite.SQLiteConnection.CreateFile(datasource);
//连接数据库
System.Data.SQLite.SQLiteConnectionconn=newSystem.Data.SQLite.SQLiteConnection();
System.Data.SQLite.SQLiteConnectionStringBuilderconnstr=newSystem.Data.SQLite.SQLiteConnectionStringBuilder();
connstr.DataSource=datasource;
connstr.Password=”admin”;//设置密码,SQLiteADO.NET实现了数据库密码保护
conn.ConnectionString=connstr.ToString();            
conn.Open();
//创建表
System.Data.SQLite.SQLiteCommandcmd=newSystem.Data.SQLite.SQLiteCommand();
stringsql=”CREATETABLEtest(usernamevarchar(20),passwordvarchar(20))”;
cmd.CommandText=sql;
cmd.Connection=conn;
cmd.ExecuteNonQuery();
//插入数据
sql=”INSERTINTOtestVALUES(‘ekinglong’,’mypassword’)”;
cmd.CommandText=sql;
cmd.ExecuteNonQuery();
//取出数据
sql=”SELECT*FROMtest”;
cmd.CommandText=sql;
System.Data.SQLite.SQLiteDataReaderreader=cmd.ExecuteReader();
StringBuildersb=newStringBuilder();
while(reader.Read())
{
    sb.Append(“username:”).Append(reader.GetString(0)).Append(“n”)
    .Append(“password:”).Append(reader.GetString(1));
 }
 MessageBox.Show(sb.ToString());

2.2使用原生态的ADO.NET访问SQLite

代码如下:
using(DbConnectionconn=newSQLiteConnection(System.Configuration.ConfigurationManager.ConnectionStrings[“sqlite”].ConnectionString))
{
   conn.Open();
   DbCommandcomm=conn.CreateCommand();
   comm.CommandText=”select*fromcustomer”;
   comm.CommandType=CommandType.Text;
   using(IDataReaderreader=comm.ExecuteReader())
   {
       while(reader.Read())
       {
           Response.Write(reader[0]);
       }
   }
}

SQLite.NET数据库连接字符串ConnectionString格式:
Basic(基本的)
     DataSource=filename;Version=3;
UsingUTF16(使用UTF16编码)
     DataSource=filename;Version=3;UseUTF16Encoding=True;
Withpassword(带密码的)
     DataSource=filename;Version=3;Password=myPassword;
Usingthepre3.3xdatabaseformat(使用3.3x前数据库格式)
     DataSource=filename;Version=3;LegacyFormat=True;
Readonlyconnection(只读连接)
     DataSource=filename;Version=3;ReadOnly=True;
Withconnectionpooling(设置连接池)
     DataSource=filename;Version=3;Pooling=False;MaxPoolSize=100;
UsingDateTime.Ticksasdatetimeformat()
     DataSource=filename;Version=3;DateTimeFormat=Ticks;
     ThedefaultvalueisISO8601whichactivatestheuseoftheISO8601datetimeformat
StoreGUIDastext(把Guid作为文本存储,默认是Binary)
    DataSource=filename;Version=3;BinaryGUID=False;
     如果把Guid作为文本存储需要更多的存储空间
Specifycachesize(指定Cache大小)
     DataSource=filename;Version=3;CacheSize=2000;
     CacheSize单位是字节
Specifypagesize(指定页大小)
     DataSource=filename;Version=3;PageSize=1024;
     PageSize单位是字节
Disableenlistmentindistributedtransactions
     DataSource=filename;Version=3;Enlist=N;
Disablecreatedatabasebehaviour(禁用创建数据库行为)
     DataSource=filename;Version=3;FailIfMissing=True;
     默认情况下,如果数据库文件不存在,会自动创建一个新的,使用这个参数,将不会创建,而是抛出异常信息
Limitthesizeofdatabase(限制数据库大小)
     DataSource=filename;Version=3;MaxPageCount=5000;
     TheMaxPageCountismeasuredinpages.Thisparameterlimitsthemaximumnumberofpagesofthedatabase.
DisabletheJournalFile(禁用日志回滚)
     DataSource=filename;Version=3;JournalMode=Off;
     Thisonedisablestherollbackjournalentirely.
PersisttheJournalFile(持久)
     DataSource=filename;Version=3;JournalMode=Persist;
     Thisoneblanksandleavesthejournalfileondiskafteracommit.DefaultbehaviouristodeletetheJournalFileaftereachcommit.
Controlingfileflushing
     DataSource=filename;Version=3;Synchronous=Full;
     Fullspecifiesafullflushtotakeactionaftereachwrite.Normalisthedefaultvalue.OffmeansthattheunderlyingOSflushesI/O’s.

 

Sqlite使用技巧
1.Sqlite判断数据表是否存在
SELECTCOUNT(*) asCNTFROMsqlite_masterwheretype=’table’andname=’DBInfo’//其中DBInfo为需要判断的表名。注意大小写敏感!

2.SQLite一条SQL语句插入多条记录
INSERTINTOTABLE(col1,col2)SELECTval11,val12UNIONALLSELECTval21,val22;
这样的写法是属于复合SQL语句,表示先把两个SELECT的结果集进行无删减的联合,再把联合结果插入到TABLE中。

3.sqlite事务
是以文件的形式存在磁盘中,每次访问时都要打开一次文件,如果对数据进行大量操作时,会很慢~
解决办法是用事务的形式提交:因为我们开始事务后,进行大量操作的语句都保存在内存中,当提交时才全部写入数据库,此时,数据库文件也就只用打开一次。
sql语句:
begin;  
INSERTINTO”table”VALUES(‘a’,’b’,’c’);  
INSERTINTO”table”VALUES(‘a’,’b’,’c’);  
INSERTINTO”table”VALUES(‘a’,’b’,’c’);  
commit;
4.SQLite自增ID字段使用方法为     INTEGERPRIMARYKEYAUTOINCREMENT
5.分页查询显示
类似MySQL数据库,是利用mySQL的LIMIT函数,LIMIT[offset,]rows从数据库表中M条记录开始检索N条记录的语句为:
SELECT*FROM表名称LIMITM,N
例如从表Sys_option(主键为sys_id)中从10条记录开始检索20条记录,语句如下:
select*fromsys_optionlimit10,20

 

您可能感兴趣的文章:C#操作SQLite方法实例详解C#中使用SQLite数据库的方法介绍ASP.NET(C#)中操作SQLite数据库实例C#中实现在32位、64位系统下自动切换不同的SQLitedll文件C#实现Excel导入sqlite的方法C#操作SQLite数据库方法小结(创建,连接,插入,查询,删除等)C#/.Net中快速批量给SQLite数据库插入测试数据C#简单访问SQLite数据库的方法(安装,连接,查询等)C#操作SQLite数据库之读写数据库的方法C#中嵌入SQLite数据库的简单方法C#简单查询SQLite数据库是否存在数据的方法C#操作SQLite数据库帮助类详解

标签: sqlite 技巧 连接 li sq ite te

C#中XmlTextWriter读写xml文件详细介绍

c++中new和delete操作符用法

上述就是C#学习教程:C#/Java连接sqlite与使用技巧分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/904515.html

(0)
上一篇 2021年10月21日
下一篇 2021年10月21日

精彩推荐