SQL怎么处理数据库初始化从1开始?请教大家(数据库初始化什么意思)

SQL怎么处理数据库初始化从1开始?请教大家(数据库初始化什么意思),第1张

您好,您是要修改数据库里面,某个表的自动递增列的开始id

那你那个表里面,当前有没有数据?

如果已经有数据了,你再从1开始,那后面就要出错了。

如果表是空表,没有数据的,那么可以

TRUNCATETABLE表名字

通过彻底清空指定表的方式,来重置那个自动递增的当期值为1

注:以上处理方式

对于SQLServer数据库的identity(1,1)

或者MySQL的AUTO_INCREMENT是有效的。如果是Oracle数据库的话,您可能需要去重新创建序列号对象

在java中只要一个类实现了Serializable接口的类就被认为是序列化的类,这种类的对象就是序列化的对象
只有被序列化的数据才允许被存储到文件、数据库之中或者通过网络协议进行传输,没有被序列化的数据是不能存储到硬盘上,不能通过网络协议进行网络传输

数据库取得session无法序列化是状态服务器使用二进制序列化导致的。根据查询相关公开信息显示,SerializationException提到无法序列化的类中包括session,状态服务器使用二进制序列化而不是XML序列化。

c#中序列化就是把一个对象保存到一个文件或数据库字段中去。

序列化用途:

1、在进程下次启动时读取上次保存的对象的信息

2、在不同的AppDomain或进程之间传递数据

3、在分布式应用系统中传递数据

常见的序列化的方法:

1、BinaryFormatter

2、SoapFormatter

3、XML序列化

用法:

BinaryFormatter的用法大致如下: 

//BinaryFormatter将对象序列化到文件中
 List<string> inputList = new List<string>() { "str1","str2","str3"};
 using (FileStream fsWriter = new FileStream(@"tmpdat",FileModeCreate,FileAccessWrite))
 {
       BinaryFormatter bf = new BinaryFormatter();
       //序列化
       bfSerialize(fsWriter, inputList);
 }
 //BinaryFormatter将文件中的数据反序列化出来
 List<string> outputList = new List<string>();
 using (FileStream fsReader = new FileStream(@"tmpdat",FileModeOpen,FileAccessRead))
 {
       BinaryFormatter bf = new BinaryFormatter();
       //反序列化
       outputList = (List<string>)bfDeserialize(fsReader);
 }

XML序列化的用法大致如下:

//xml序列化到tmpxml文件中
List<string> inputList = new List<string>() { "str1","str2"};
using (FileStream fsWriter = new FileStream(@"tmpxml",FileModeCreate,FileAccessWrite))
{
      XmlSerializer xs = new XmlSerializer(typeof(List<string>));
      xsSerialize(fsWriter, inputList);
}
//从tmpxml文件中反序列化出来
List<string> outputList = new List<string>();
using (FileStream fsReader = new FileStream(@"tmpxml",FileModeOpen,FileAccessRead))
{
     XmlSerializer xs = new XmlSerializer(typeof(List<string>));
     outputList = xsDeserialize(fsReader) as List<string>;
}

总结:

两个的用法大致如下:

序列化:

1得到一个存储对象的类型

2创建一个写入文件流

3定义要序列化的类型

4调用序列化方法

反序列化:

1定义一个装载对象的类型

2创建一个读出文件流

3定义要反序列化的类型

4调用反序列化方法

BinaryFormatter类进行序列化和反序列化,以缩略型二进制格式写到一个文件中去,速度比较快,而且写入后的文件已二进制保存有一定的保密效果。标记为NonSerialized的其他所有成员都能序列化。

采用xml序列化的方式只能保存public的字段和可读写的属性,对于private等类型的字段不能进行序列化。

二进制序列化的优点:

1. 所有的类成员(包括只读的)都可以被序列化;

2. 性能非常好。

XML序列化的优点:

1. 互 *** 作性好;

2. 不需要严格的二进制依赖;

3. 可读性强

主键是用来唯一标识每一行数据的,而text类型只能存储文本数据。数据库表不能只设置一个主键和一个text类型,因为主键是用来唯一标识每一行数据的,而text类型只能存储文本数据,不能用来唯一标识每一行数据,所以不能只设置一个主键和一个text类型。此外,如果只设置一个text类型,那么数据库表中的数据将无法进行序列化,从而无法实现数据的查询和更新等 *** 作。

请注意看如下代码:
public List getObject(String sql, Object[] object) { //sql执行语句,object是你sql语句里面的参数
List list = new ArrayList();
Connection con = null;
PreparedStatement pre = null;
ResultSet rs = null;
try{
con = C3P0UtilgetInstance()getConnection(); //这是你获得数据库连接,你把这里改成调用你自己写的jdbc方法
pre = conprepareStatement(sql); //执行sql语句
if(object!=null){
for(int i=0;i<objectlength;i++){
presetObject(i+1, object[i]); //给sql里面的参数进行赋值
}
}
rs = preexecuteQuery();
while(rsnext()){
Users u = new User();
usetUserName(rsgetString("UserName"));
usetUserPas(rsgetString("UserPas")); listadd(u);
}
}catch(Exception e){
eprintStackTrace();
return null;
}finally{
C3P0Utilclose(con, pre, rs); //关闭数据库资源
}
return list; //返回list集合
}
注意:list里面保存的是User对象的信息
你要获得User对象的信息,那么就要遍历list
for(int i=0;i<listsize;i++){
User u = (User)listget(i); Systemoutprintln("UserName:"+ugetUserName());
Systemoutprintln("UserPas:"+ugetUserPas());
} 上面是针对list里面有很多个User对象,当然list里面只有一个User对象,也是可以的。
如果你的list里面只有一个User,那么可以直接:User u = (User)listget(0);
Systemoutprintln("UserName:"+ugetUserName());
Systemoutprintln("UserPas:"+ugetUserPas());
希望对你有帮助!


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

原文地址: http://www.outofmemory.cn/yw/13363913.html

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

发表评论

登录后才能评论

评论列表(0条)

保存