如何给数据库文件加密,然后用sqlite读取请各位大师帮忙啊

如何给数据库文件加密,然后用sqlite读取请各位大师帮忙啊,第1张

数据库文件加密,我给您介绍一个比较简便的方法:

1 下载安装超级加密3000。

2 然后在需要加密的文件上单击鼠标右键选择加密。

3 在d出的文件加密窗口中设置文件加密密码就OK了。

只要导入jar包就行了,使用的时候 加载class(即ClassforName("orgsqliteJDBC");)

然后可以用最原始的jdbc代码去使用sqlite

比如创建连接:Connection conn = DriverManagergetConnection("jdbc:sqlite:testdb" );(其中testdb就是数据库文件以及数据库的名称,这句话有两个作用:1、如果不存在该数据库则创建并返回连接;2、如果存在了数据库,则直接返回连接)

代码如下:

import javasql;

public class SQLiteJDBC

{

  public static void main( String args[] )

  {

    Connection c = null;

    try {

    //ClassforName加载class

      ClassforName("orgsqliteJDBC");

      c = DriverManagergetConnection("jdbc:sqlite:testdb");

    } catch ( Exception e ) {

      Systemerrprintln( egetClass()getName() + ": " + egetMessage() );

      Systemexit(0);

    }

    Systemoutprintln("Opened database successfully");

  }

}

创建表

import javasql;

public class SQLiteJDBC

{

  public static void main( String args[] )

  {

    Connection c = null;

    Statement stmt = null;

    try {

    //ClassforName加载class

      ClassforName("orgsqliteJDBC");

      //DriverManagergetConnection创建连接

      c = DriverManagergetConnection("jdbc:sqlite:testdb");

      Systemoutprintln("Opened database successfully");

      stmt = ccreateStatement();

      //sql创建表语句

      String sql = "CREATE TABLE COMPANY " +

                   "(ID INT PRIMARY KEY     NOT NULL," +

                   " NAME           TEXT    NOT NULL, " + 

                   " AGE            INT     NOT NULL, " + 

                   " ADDRESS        CHAR(50), " + 

                   " SALARY         REAL)"; 

      //executeUpdate创建表

      stmtexecuteUpdate(sql);

      stmtclose();

      cclose();

    } catch ( Exception e ) {

      Systemerrprintln( egetClass()getName() + ": " + egetMessage() );

      Systemexit(0);

    }

    Systemoutprintln("Table created successfully");

  }

}

要在 Java 中调用 SQLite3 DLL 访问 SQLite 数据库,您需要完成以下步骤:

1 安装 SQLite3 DLL:首先,您需要从 SQLite 官方网站下载适用于您 *** 作系统的 SQLite3 DLL,并将其安装到您的计算机上。在下载和安装时,请确保选择与您使用的 Java 版本兼容的版本。

2 配置环境变量:为了让 Java 能够正确识别 SQLite3 DLL,您需要在您的计算机上配置相应的环境变量。具体来说,您需要将 SQLite3 DLL 所在的目录添加到 PATH 环境变量中。

3 导入 JDBC 驱动程序:为了让 Java 代码能够访问 SQLite 数据库,您需要导入适用于 SQLite 的 JDBC 驱动程序。您可以从 SQLite JDBC 官方网站下载适用于您的 *** 作系统的 JDBC 驱动程序。

4 连接 SQLite 数据库:打开 Eclipse 或其他 Java 开发工具,并编写 Java 代码以连接到 SQLite 数据库。使用 JDBC 驱动程序创建数据库连接,并执行 SQL 查询以访问和 *** 作 SQLite 数据库中的数据。例如,以下是一个简单的代码段,可以在 Java 中连接 SQLite 数据库:

```

// Load the SQLite JDBC driver

ClassforName("orgsqliteJDBC");

// Connect to the SQLite database

Connection conn = DriverManagergetConnection("jdbc:sqlite:/path/to/your/databasedb");

// Create a statement object

Statement stmt = conncreateStatement();

// Execute a query and retrieve the results

ResultSet rs = stmtexecuteQuery("SELECT FROM your_table");

// Process the results

while (rsnext()) {

// Do something with each row of data

}

// Close the database connection

rsclose();

stmtclose();

connclose();

```

以上就是在 Java 中调用 SQLite3 DLL 访问 SQLite 数据库的基本步骤。需要注意的是,使用 SQLite3 DLL 访问 SQLite 数据库时,您需要小心处理数据库连接和事务,以确保数据的一致性和可靠性。

如何在java中使用sqlite: 上篇文章介绍了如何在Eclipse中配置javasqlite,以下简单介绍javasqlite如何实现数据库的 *** 作: Javasqlite公开了几个类,包括:Authorizer、 BusyHandler、Callback、Constants、DatabaseException、Function、FunctionContext、ProgressHandler、StringEncoder、TableResult、Trace、Vm关于这几个类可以参考作者网站上的文档。 以下通过对一个数据表的 *** 作,介绍如何用这几个类进行数据库 *** 作:数据库 *** 作类:HelloSqlite2java:初始化一个Database对象:Database db = new Database();Database类是主要功能类,通过db对象可以实现对数据库的 *** 作: 1、连接数据库:public int connectDB(String dbPath){ try{ dbopen(dbPath,0666);//调用open方法连接数据库,如果不存在创建这个数据库文件 return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }} 2、创建数据表 //创建数据库字符串 static final String strCreate = "create table [User] ([UserID] integer primary key,[UserName] text,"+ "[Password] text,[BeDeleted] integer);";public int createTable(){ try { dbexec(strCreate,null);//执行一个sql命令,由于不需要处理返回值, //所以callback可以直接为null return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }} 3、修改数据表31、增加记录static final String strInsert1 = "INSERT INTO [USER] ([username],[password],[bedeleted])VALUES('sacramento','123456','1');"; public int insert(){ try { dbexec(strInsert1,null);//执行一个sql命令,由于不需要处理返回值, //所以callback可以直接为null return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }}32、修改记录static final String strUpdate = "update [user] set [username] = 'Boston' where [userid] = 1;"; public int update(){ try { dbexec(strUpdate,null);//执行一个sql命令,由于不需要处理返回值, //所以callback可以直接为null return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }} 33、删除记录static final String strDelete = "delete from [user] where [userid] = 2;"; public int delete(){ try { dbexec(strDelete,null);//执行一个sql命令,由于不需要处理返回值, //所以callback可以直接为null return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }} 4、查询数据表以下函数简单的输出查询结果:static final String strDisplay = "select from [user];";public int displayTable(){ try { Systemoutprintln(dbget_table(strDisplay)); return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }} 5、处理查询结果简单的输出结果可能并不能满足大部分查询的需要,那如何能够在查询过程中处理查询结果呢?可以使用db的exec(String arg0,Callback arg1)方法,具体做法如下:写一个class TableFmt 实现了SQLiteCallback接口,接着将这个类的一个对象传递给exec的Callback参数。这样exec就会对每个查询结果调用Callback。继而实现对结果的处理:接口的实现,实现Callback规定的三个接口函数:class TableFmt implements Callback{ public void columns(String[] cols) { Systemoutprintln("columns"); for (int i = 0; i < colslength; i++) { Systemoutprintln(cols[i]); } } public boolean newrow(String[] cols) { Systemoutprintln("newrow"); for (int i = 0; i < colslength; i++) { Systemoutprintln(cols[i]); } return false; } public void types(String[] cols) { Systemoutprintln("types"); for (int i = 0; i < colslength; i++) { Systemoutprintln(cols[i]); } }}把TableFmt的一个实例传给exec()函数,这样便可以实现对结果集的处理。public int dealTable(){ try { dbexec(strDisplay,new TableFmt()); return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }} 你可能觉得没一个功能写一个函数太麻烦了,是的。可以做一个通用的函数,把sql语句当作参数传递给函数。比如实现一个这样的函数:int executenonquery(String sql);对于不需要返回值的sql语句,比如增加、删除、修改、都可以通过这个函数来实现,只需要传入不同参数就可以,函数代码如下:public int executenonquery(String sql){ try { dbexec(sql,null);//执行一个sql命令,由于不需要处理返回值, //所以callback可以直接为null return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }}

以下通过对一个数据表的 *** 作,介绍如何用这几个类进行数据库 *** 作:数据库 *** 作类:HelloSqlite2java:初始化一个Database对象:Database db = new Database();Database类是主要功能类,通过db对象可以实现对数据库的 *** 作: 1、 连接数据库:public int connectDB(String dbPath){ try{ dbopen(dbPath,0666);//调用open方法连接数据库,如果不存在创建这个数据库文件 return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }} 2、创建数据表 //创建数据库字符串 static final String strCreate = "create table [User] ([UserID] integer primary key,[UserName] text,"+ "[Password] text,[BeDeleted] integer);";public int createTable(){ try { dbexec(strCreate,null);//执行一个sql命令,由于不需要处理返回值, //所以callback可以直接为null return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }} 3、修改数据表31、增加记录static final String strInsert1 = "INSERT INTO [USER] ([username],[password],[bedeleted])VALUES('sacramento','123456','1');"; public int insert(){ try { dbexec(strInsert1,null);//执行一个sql命令,由于不需要处理返回值, //所以callback可以直接为null return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }}32、修改记录static final String strUpdate = "update [user] set [username] = 'Boston' where [userid] = 1;"; public int update(){ try { dbexec(strUpdate,null);//执行一个sql命令,由于不需要处理返回值, //所以callback可以直接为null return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }} 33、删除记录static final String strDelete = "delete from [user] where [userid] = 2;"; public int delete(){ try { dbexec(strDelete,null);//执行一个sql命令,由于不需要处理返回值, //所以callback可以直接为null return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }} 4、查询数据表以下函数简单的输出查询结果:static final String strDisplay = "select from [user];";public int displayTable(){ try { Systemoutprintln(dbget_table(strDisplay)); return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }} 5、处理查询结果简单的输出结果可能并不能满足大部分查询的需要,那如何能够在查询过程中处理查询结果呢?可以使用db的exec(String arg0,Callback arg1)方法,具体做法如下:写一个class TableFmt 实现了SQLite Callback接口,接着将这个类的一个对象传递给exec的Callback参数。这样exec就会对每个查询结果调用Callback。继而实现对结果的处理:接口的实现,实现Callback规定的三个接口函数:class TableFmt implements Callback{ public void columns(String[] cols) { Systemoutprintln("columns"); for (int i = 0; i < colslength; i++) { Systemoutprintln(cols[i]); } } public boolean newrow(String[] cols) { Systemoutprintln("newrow"); for (int i = 0; i < colslength; i++) { Systemoutprintln(cols[i]); } return false; } public void types(String[] cols) { Systemoutprintln("types"); for (int i = 0; i < colslength; i++) { Systemoutprintln(cols[i]); } }}把TableFmt的一个实例传给exec()函数,这样便可以实现对结果集的处理。public int dealTable(){ try { dbexec(strDisplay,new TableFmt()); return 1; } catch(javalangException ex) { exprintStackTrace(); return -1; }} 你可能觉得没一个功能写一个函数太麻烦了,是的。可以做一个通用的函数,把sql语句当作参数传递给函数。

给SQLite数据库加密解密的方法:

1、创建空的sqlite数据库。

//数据库名的后缀你可以直接指定,甚至没有后缀都可以

//方法一:创建一个空sqlite数据库,用IO的方式

FileStream fs = FileCreate(“c:\\testdb“);

//方法二:用SQLiteConnection

SQLiteConnectionCreateFile(“c:\\testdb“);

创建的数据库是个0字节的文件。

2、创建加密的空sqlite数据库

//创建一个密码为password的空的sqlite数据库

SQLiteConnectionCreateFile(“c:\\test2db“);

SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2db“);

SQLiteConnection cnn = new SQLiteConnection(“Data Source=D:\\test2db“);

cnnOpen();

cnnChangePassword(“password“);

3、给未加密的数据库加密

SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\testdb“);

cnnOpen();

cnnChangePassword(“password“);

以上就是关于如何给数据库文件加密,然后用sqlite读取请各位大师帮忙啊全部的内容,包括:如何给数据库文件加密,然后用sqlite读取请各位大师帮忙啊、怎样在普通java项目中嵌入sqlite数据库、java调用sqlite3.dll访问sqlite等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10184744.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存