用sqlite C#数据存放的问题
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.SQLite;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
DbProviderFactory factory = SQLiteFactory.Instance;
using (DbConnection conn = factory.CreateConnection())
{
conn.ConnectionString = "Data Source=d:/data.db";
conn.Open();
string sql = "Create Table test(S int32,D int32,P int32,K int32,X int32,Y int32,Z int32,Q int32,F int32)";
DbCommand cmd = conn.CreateCommand();
cmd.Connection = conn;
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
//cmd.Parameters.Add(cmd.CreateParameter());
DbTransaction trans = conn.BeginTransaction();
for (int c = 1; c <= 100000; c++)
{
cmd.CommandText = "insert into test (S,D,P,K,X,Y,Z,Q,F) values(34,53,53,76,24,24,64,4,8)";
//cmd.Parameters[0].Value = c;
cmd.ExecuteNonQuery();
}
trans.Commit();
int i = sizeof(Int);
Console.WriteLine(i);
Console.ReadLine();
}
}
}
}
数据是int型的,占4字节,也就是说文件应该大于9列*100000行*4字节,结果不是,老师说有错,我想问错在哪?没错的话,理由是什么?
------解决方案--------------------
参考SQLite文件格式:http://www.sqlite.org/fileformat2.html
SQLite当前的版本3支持的数据类型有5种:
1.NULL:空值。
2.INTEGER:有符号整数,根据情况用1、2、3、4、6或8个字节存储。
3.REAL:浮点数。
4.TEXT:文本,用字符集UTF-8、UTF-16BE 或 UTF-16LE存储,视数据库编码格式而定。
5.BLOB:二进制字节序列,一般存放不易用数值或文本表示的对象,但理论上可以存放任何东西。
个人推测:整数只支持一种INTEGER,不一定是4个字节存储。你把插入的整数换大些,比如5千万多,再看看文件的大小。