sqlit中的textdb.db文件是什么

查看: 4486|回复: 9
sql中的日志文件为什么不能属于文件组?
论坛徽章:0
如题.还有一个问题:我用
& && && && && && && && & alter database test1
& && && && && && && && & add file(name=test1_log,filename='c:\sql\test1_log.ldf',size=2)
& && && && && && && && & to filegroup&&group1
&&可以把日志文件参加到文件组 group1中.&&sql 2000也没出错.
可书上说日志文件不属于任何一个文件组.我很不明白.希望高手指点!!!谢谢!!
论坛徽章:1
add file命令添加的是数据文件,只不过你把数据文件命名为test1_log.ldf了
add log file才是添加日志文件
认证徽章论坛徽章:8
呵呵,楼主真有意思。
论坛徽章:0
先谢谢两位回答.我知道了,应该写成add log file.
问题是日志文件是不应该属于文件组的呀!书上是这么写的.
可实际上却可以参加日志文件到文件组,我不太明白了.
这有点自相矛盾了.(或许问这个问题很没水平,但还是请高手解决一下.先谢谢了!!)
论坛徽章:0
日志文件本身是没有文件组概念的,就算是用add log file也不能执行to filegroup的操作。你自己测试过这个语句吗?建议测试一下,一定会报错的。
认证徽章论坛徽章:8
是啊,楼上说得对,本来不矛盾的,是你自己的试验把这个结论搞的矛盾了。
文件组就是为了让用户更好的控制自己数据在磁盘或存储上的放置位置的,比如你建立一个表,你可以放在GROUP1上,也可以放置在GROUP2上,因为文件组是和具体的存储对应的,可以说,文件组就是完成逻辑对象和物理存储间的映射的,它是逻辑数据库和物理存储间的纽带。
ORACLE中的表空间,DB2中的表空间,都是这个功能
论坛徽章:0
好的,我再看看,查查到底是错在什么地方了.先谢谢!
论坛徽章:0
这个论坛真好!再次谢谢回答!祝每个人都好!开始喜欢这个论坛了!
论坛徽章:1
这个论坛是中国Oracle的最强力量
不过MSSQL应该是csdn最强
论坛徽章:0
楼上打广告,,呵呵
itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号:10 广播电视节目制作经营许可证:编号(京)字第1149号Android教程之SQlit数据库操作-360文档中心
360文档中心免费免积分下载,各行业
知识、技术、信息等word文档下载网站
Android教程之SQlit数据库操作
Android教程之SQlit数据库操作Android 教程之 SQlit 数据库操作 android.database.sqlite.SQLiteOpenHelperpublic
SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
Create a helper object to create, open, and/or manage a database. The database is not actually created or opened until one of getWritableDatabase() or getReadableDatabase() is called.
直到调用 getWritableDatabase()函数或者 getReadableDatabase()时才会创建 或者打开数据库。(如果数据库没有创建,那么会先创建数据库)
Parameters
context to use to open or create the database
name of the database file, or null for an in-memory database
factory to use for creating cursor objects, or null for the default version number of the database (starting at 1); if the database is older, onUpgrade(SQLiteDatabase, int, int) will be used to upgrade the database
A helper class to manage database creation and version management.
SQLiteOpenHelper 类是管理数据库生成和数据库版本建立的辅助类。
You create a subclass implementing onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int) and optionally onOpen(SQLiteDatabase), and this class takes care of opening the database if it exists, creating it if it does not, and upgrading it as necessary. Transactions are used to make sure the database is always in a sensible state
SQLiteOpenHelper ,如果这个数据库存在,那么 SQLiteOpenHelper 负责管理数 据库。
如果数据库不存在,那么 SQLiteOpenHelper 会建立一个数据库。
如果需要的话,升级数据库。
private static final String DB_NAME = "CartDB.db";
private static final int DB_VERSION = 2;
private static final String TABLE_NAME_1 = "MyOrder";
private static final String TABLE_NAME_2 = "OrderLine";
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME_1 + " (" + "order_no"
+ " text not null, " + "type" + " text not null, " + "desc"
+ " text" + ");");
db.execSQL("CREATE TABLE " + TABLE_NAME_2 + " (" + "order_no"
+ " text not null, " + "item_no" + " text not null, "
免费下载该文档:
Android教程之SQlit数据库操作的相关文档搜索
Android使用SQLite数据库的简单实例_计算机软件及应用_IT/计算机_专业资料。Android使用SQLite数据库的简单实例Android 使用 SQLite 数据库的简单实例先画个图,了解下 ...Android SQLite 数据库基本操作程序的最主要的功能在于对数据进行操作, 通过对...不熟悉的小伙伴可以在网上查到一些教程 我们可以看到我们确实在 book 这张表中...Android开发学习教程—Android使用SQLite数据库_计算机软件及应用_IT/计算机_专业资料。创建数据库 Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须 ...Android SQLite数据库操作_计算机软件及应用_IT/计算机_专业资料。Android SQLite ...Android开发学习教程—A... 10页 免费
android之利用SQLite数据... 4页 免费...Android 开发中使用 SQLite 数据库出处:安卓开发论坛时间: 人气:2851 我来评论 教程贴士:本教程为大家介绍 Android 开发中怎么使用 SQLite 数据库。 SQ...SQLite是Android平台软件开发中会经常用到的数据库产品,作为一款轻型数据库,SQLite的设计目标就是是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常...ANDROID SQLITE数据库操作通用框架_电子/电路_工程科技_专业资料。[ 置顶 ] Android sqlite 数据库操作通用框架 AHibernate(一)-CRUD 示例和使用步骤 AHibernate ...Android学习培训教程-SQLite数据存储_计算机软件及应用_IT/计算机_专业资料。...在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表,索引,填充...ANDROID 开发中使用 SQLITE 数据库_电子/电路_工程科技_专业资料。www.hicode....Android开发学习教程—A... 10页 免费 关于android中的sqlite数... 6页 1下载...面试题:如何对 SQLite 数据库中进行大量的数据插入? Android 系统内置了 SQLite 数据库,并且提供了一整套的 API 用于对数据 库进行增删改查操作。SQLite 是一个...博客访问: 3462244
博文数量: 176
注册时间:
认证徽章:
Happy is the man who is living by his hobby.
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 数据库开发技术 23:44:57
1,通过命令行使用.dump来备份成sql文件的方式
命令语句:
C:/sqlite/sqlite3 tim.db .dump >test.sql
?TABLE? ...&&&&& Dump the database in an
SQL text format
&&&&&&&&&&&&&&&&&&&&&&&& If TABLE specified,
only dump tables matching
&&&&&&&&&&&&&&&&&&&&&&&& LIKE pattern TABLE.
执行效果如下图所示,可以看到备份的sql文件内容:
2,通过.read 语句来恢复数据库
命令语句:
C:/sqlite/sqlite3 tim2.db “.read
c:/sqlite/test.sql
&&&&&&& .read FILENAME&&&&&&&& Execute SQL in FILENAME
& & &执行效果如下图所示:
3,通过java代码实现对sqlite数据库的备份恢复操作
Java代码如下:
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SqlitBackup {
&&&&public String db_source=\"jdbc:sqlite://c:/sqlite/tim.db\";
&&&&public String backup_file=\"c:/sqlite/alldbbackup.sql\";
&&&&public static Connection conn = null;
&&&&public static Statement stat = null;
&&&&&* 构造函数初始化数据源*/
&&&&public SqlitBackup() {
&&&&&&&&// TODO Auto-generated constructor stub
&&&&&&&&try {
&&&&&&&&&&&&Class.forName(\"org.sqlite.JDBC\");
&&&&&&&&&&&&conn = DriverManager.getConnection(db_source);
&&&&&&&&&&&&stat = conn.createStatement();
&&&&&&&&&&&
&&&&&&&&} catch (Exception e) {
&&&&&&&&&&&&// TODO Auto-generated catch block
&&&&&&&&&&&&e.printStackTrace();
&&&&public static void main(String[] args) throws SQLException, IOException, ClassNotFoundException {
&&&&&&&&// TODO Auto-generated method stub
&&&&&&&&SqlitBackup sqlite =new SqlitBackup();
&&&&&&&&// 1 ,录入初始化数据
&&&&&&&&sqlite.init_data();
&&&&&&&&// 2,开始备份
&&&&&&&&sqlite.backup();
&&&&&&&&// 3,删除原有的数据
&&&&&&&&sqlite.dropDb();
&&&&&&&&// 4,通过备份文件恢复数据
&&&&&&&&&sqlite.restore();
&&&&&&&&// 5,关闭连接和数据源
&&&&&&&&stat.close();
&&&&&&&&conn.close();
&&&&&* 恢复sqlite数据库**/
&&&&private void restore() throws IOException, SQLException, ClassNotFoundException{
&&&&&&&&Runtime rt = Runtime.getRuntime();
&&&&&&&&String cmd=\"c:/sqlite/sqlite3 c:/sqlite/tim.db \\\".read \"+backup_file+\"\\\"\";
&&&&&&&&Process process = rt.exec( cmd);
&&&&&&&&Class.forName(\"org.sqlite.JDBC\");
&&&&&&&&conn = DriverManager.getConnection(db_source);
&&&&&&&&stat = conn.createStatement();
&&&&&&&&ResultSet rs2 = stat.executeQuery(\"select * from sqlite_\"); // 查询数据
&&&&&&&&System.out.println(\"4,数据已经恢复数据操作演示:\");
&&&&&&&&while (rs2.next()) { // 将查询到的数据打印出来
&&&&&&&&&&&&System.out.print(\"tbl_name = \" + rs2.getString(\"tbl_name\") + \", \"); // 列属性一
&&&&&&&&rs2.close();
&&&&&* 删除表**/
&&&&private void dropDb (){
&&&&&&&&try {
&&&&&&&&&&&&stat.executeUpdate(\"DROP TABLE IF EXISTS COMPANY; \");
&&&&&&&&&&&&stat.executeUpdate(\"DROP TABLE IF EXISTS t1; \");
&&&&&&&&&&&&System.out.println(\"3,表已经删除成功\");
&&&&&&&&&&&
&&&&&&&&} catch (SQLException e) {
&&&&&&&&&&&&// TODO Auto-generated catch block
&&&&&&&&&&&&e.printStackTrace();
&&&&&* 备份sqlite数据库*/
&&&&private void backup() throws SQLException, IOException{
&&&&&&&&Runtime rt = Runtime.getRuntime();
&&&&&&&&String cmd=\"c:/sqlite/sqlite3 c:/sqlite/tim.db .dump\";
&&&&&&&&Process process = rt.exec( cmd);
&&&&&&&&try{
&&&&&&&&&InputStream in = process.getInputStream();// 控制台的输出信息作为输入流
&&&&&&&&&&&InputStreamReader xx = new InputStreamReader(in, \"utf-8\");
&&&&&&&&&&&// 设置输出流编码为utf-8。这里必须是utf-8,否则从流中读入的是乱码
&&&&&&&&&&&String inStr;
&&&&&&&&&&&StringBuffer sb = new StringBuffer(\"\");
&&&&&&&&&&&String outStr = null;
&&&&&&&&&&&// 组合控制台输出信息字符串
&&&&&&&&&&&BufferedReader br = new BufferedReader(xx);
&&&&&&&&&&&while ((inStr = br.readLine()) != null) {
&&&&&&&&&&&&sb.append(inStr + \"\\r\\n\");
&&&&&&&&&&&}
&&&&&&&&&&&outStr = sb.toString();
&&&&&&&&&&&System.out.println();
&&&&&&&&&&&System.out.println(\"2,备份出来的sql文件内容是,outStr:\\r\"+outStr);
&&&&&&&&&&&&// 要用来做导入用的sql目标文件:
&&&&&&&&&&&FileOutputStream fout = new FileOutputStream(backup_file);
&&&&&&&&&&&OutputStreamWriter writer = new OutputStreamWriter(fout, \"utf-8\");
&&&&&&&&&&&writer.write(outStr);
&&&&&&&&&&&writer.flush();
&&&&&&&&&&&in.close();
&&&&&&&&&&&xx.close();
&&&&&&&&&&&br.close();
&&&&&&&&&&&writer.close();
&&&&&&&&&&&fout.close();
&&&&&&&&&&} catch (Exception e) {
&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&&}
&&&&private void init_data(){
&&&&&&&&/*初始化建立2张表,录入测试数据*/
&&&&&&&&try {
&&&&&&&&&&&&// System.out.println(init_sql1);
&&&&&&&&&&&&stat.executeUpdate(\"DROP TABLE IF EXISTS COMPANY; \");
&&&&&&&&&&&&stat.executeUpdate(\"CREATE TABLE COMPANY(ID INT NOT NULL, NAME VARCHAR(20),AGE INT,ADDRESS VARCHAR(20),SALARY DECIMAL(7,2));\");
&&&&&&&&&&&&stat.executeUpdate(\"INSERT INTO COMPANY VALUES(2,\'Allen\',25,\'Texas\',15000);\");
&&&&&&&&&&&&stat.executeUpdate(\"INSERT INTO COMPANY VALUES(3,\'Teddy\',23,\'Norway\',20000); \");
&&&&&&&&&&&
&&&&&&&&&&&&stat.executeUpdate(\"DROP TABLE IF EXISTS t1; \");
&&&&&&&&&&&&stat.executeUpdate(\"CREATE TABLE t1(id int);\");
&&&&&&&&&&&&stat.executeUpdate(\"INSERT INTO t1 VALUES(1);\");
&&&&&&&&&&&&stat.executeUpdate(\"INSERT INTO t1 VALUES(2);\");
&&&&&&&&&&&&// stat.executeUpdate(init_sql1);
&&&&&&&&&&&&ResultSet rs = stat.executeQuery(\"select * from COMPANY;\"); // 查询数据
&&&&&&&&&&&&System.out.println(\"1,初始化创建表结构录入数据操作演示:\");
&&&&&&&&&&&&while (rs.next()) { // 将查询到的数据打印出来
&&&&&&&&&&&&&&&&System.out.print(\"name = \" + rs.getString(\"name\") + \", \"); // 列属性一
&&&&&&&&&&&&&&&&System.out.println(\"salary = \" + rs.getString(\"salary\")); // 列属性二
&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&&&&&&&&&rs.close();
&&&&&&&&} catch (SQLException e) {
&&&&&&&&&&&&// TODO Auto-generated catch block
&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&&&
执行结果如下:
(1),初始化创建表结构录入数据操作演示:
name = Allen, salary = 15000
name = Teddy, salary = 20000
(2),备份出来的sql文件内容是,outStr:
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE COMPANY(ID INT NOT
NULL, NAME VARCHAR(20),AGE INT,ADDRESS VARCHAR(20),SALARY DECIMAL(7,2));
INSERT INTO "COMPANY"
VALUES(2,'Allen',25,'Texas',15000);
INSERT INTO "COMPANY"
VALUES(3,'Teddy',23,'Norway',20000);
CREATE TABLE t1(id int);
INSERT INTO "t1"
VALUES(1);
INSERT INTO "t1"
VALUES(2);
(3),表已经删除成功
(4),数据已经恢复数据操作演示:
name = Allen, salary = 15000
name = Teddy, salary = 20000
阅读(8614) | 评论(0) | 转发(2) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。查看:4076|回复:11
中级工程师
在SQL中,含有多个文件的数据库和多个文件组的数据库区别在哪里。
一个数据库至少一个文件组
一个文件组至少一个文件
多个文件和多个文件组只是上面的某种形式而已,没什么特别的区别。
中级工程师
谢谢,:(bofu11):
多个文件组 以便于使不同的表放在不同的文件组类,以达到控制某些表存储在某些磁盘上。这个是更加细节的控制。
中级工程师
我也不清楚阿,难道不使用文件组就不能放到其他的磁盘吗?
中级工程师
哈哈,谢谢版主
create table xxx
on groupname&&--这里指定存储文件组,进而指定位置。
--这种在一些大型的应用上使用的非常多,可以更加细致的控制IO,达到最大化利用IO的效果。当然也需要很多评估和计算。
引用:原帖由 244512 于
10:21 发表
如果filegroup下有两个数据文件,mdf在磁盘1上,ndf在磁盘2上,那么这个表就被安排到这两个磁盘上了? 不是这么理解的
应该是你分了2个filegroup1,2。分别对应file1 和file2,然后你可以将这个2个文件放在不同磁盘上。
中级工程师
原来还可以这样建表阿。:ldw4:
中级工程师
这应该看磁盘的,性能了。:(bofu11):
但是文件只会有一个mdf,其他的文件都是ndf格式。
不是,logical read这个是多少应该没有什么变化。
而是看看IO队列,如果没排队说明io情况很好在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
合并的工具类
package cn.qina.
import java.io.F
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io.FileOutputS
import java.io.IOE
import java.io.InputS
import java.io.OutputS
import java.io.SequenceInputS
import java.util.ArrayL
import java.util.C
import java.util.C
import java.util.TreeS
public class CombinationUtil {
/*输入要被合并的文件所在的路径
public static void combination(String stapath,String endpath) throws IOException {
File stafile=new File(stapath);
if ((!stafile.exists())||(!stafile.isDirectory())) {
System.out.println("请正确的输入路径");
//排序文件,按照名字
TreeSet&File& set=new TreeSet&File&(new Comparator&File&() {
public int compare(File o1, File o2) {
return o1.getPath().compareTo(o2.getPath());
File[] files=stafile.listFiles();//获取开始目录下的所有文件
ArrayList&InputStream& inpList=new ArrayList&InputStream&();
ArrayList&File& fileList=new ArrayList&File&();
for (int i = 0; i & files. i++) {
if (!files[i].isDirectory()) {//过滤掉文件夹
set.add(files[i]);
fileList.addAll(set);//传入文件列表
for (int i = 0; i & fileList.size(); i++) {
inpList.add(new FileInputStream(fileList.get(i)));//转换为输入流
SequenceInputStream s=new SequenceInputStream(Collections.enumeration(inpList));
byte[] b=new byte[];
int len=0;
FileOutputStream outputStream=new FileOutputStream(endpath);
while ((len=s.read(b))!=-1) {
outputStream.write(b, 0, len);
outputStream.close();
s.close();
package cn.qina.
import java.io.F
import java.io.IOE
public class Sqlittext {
public static void main(String[] args) {
String endpath="G:"+File.separator+"sqlit";//输出路径
String stapath="G:"+File.separator+"sqlit";//输入路径
CombinationUtil.combination(stapath, endpath);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
文件夹截图
java.io.FileNotFoundException: G:\sqlit (拒绝访问。)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.&init&(FileOutputStream.java:194)
at java.io.FileOutputStream.&init&(FileOutputStream.java:84)
at cn.qina.file.CombinationUtil.combination(CombinationUtil.java:54)
at cn.qina.file.Sqlittext.main(Sqlittext.java:12)
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
String endpath="G://sqlit";
File.separator ==
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。

我要回帖

更多关于 textdb 的文章

 

随机推荐