|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
归根到底,Java跨平台可以,但是要重新编写代码,否则还分什么J2EE/J2SE/J2ME呢!假如我们必要一次性往数据库的多个表中增加数据,要末全体乐成,要末全体失利。这类功效在sqlserver中我们能够使用事件(Transaction)轻松完成,在.net中则供应了SqlTransaction类来完成一样功效。
SqlTransaction:暗示要在SQLServer数据库中处置的Transact-SQL事件
利用示比方下:
/*
*开启一个事件,实行list中一切的sql语句,并将第一条sql语句的前往值作为后续sql语句中最
后一个参数的值。
*/
publicstaticvoidExecuteDictionary(List<DictionaryEntry>lists)
{
using(SqlConnectionconnection=Conn())
{
//判别该毗连是不是翻开,假如未翻开,则翻开该毗连
if(connection.State==ConnectionState.Closed)
{
connection.Open();
}
//从该毗连创立一个事件
SqlTransactiontrans=connection.BeginTransaction();
SqlCommandcmd=newSqlCommand();
cmd.Connection=connection;
cmd.CommandType=CommandType.Text;
//设置该Command将在事件trans中实行
cmd.Transaction=trans;
try
{
SqlParameter[]sqlparameters;
intidentity=0;
for(inti=0;i<lists.Count;i++)
{
cmd.CommandText=lists.Key.ToString();
sqlparameters=(SqlParameter[])lists.Value;
foreach(SqlParameterparainsqlparameters)
{
cmd.Parameters.Add(para);
}
if(i==0)
{
identity=(int)cmd.ExecuteScalar();
}
else
{
//将第一条sql的前往值作为后续的sql最初一个参数的值
cmd.Parameters[cmd.Parameters.Count-1].Value=identity;
cmd.ExecuteNonQuery();
}
cmd.Parameters.Clear();
}
//提交该事件
trans.Commit();
}
catch(Exceptionex)
{
//假如在实行过程当中产生毛病,则回滚该事件
trans.Rollback();
throwex;
}
}
}
该例复杂的演示了在.net中利用SqlTransaction的例子,但愿能给人人带来匡助。什么叫数据库怎么样?什么意思?你想单学数据库。(其实变成是我问的) |
|