badge1 work_hour
1 25
2 40
k 25 這行類型錯誤
4 26
我想導入一批數據,本來我想如果有一行出錯數據不導入,但執行下面的代碼時,在出錯的行代碼上面的數據刪除了,但是出錯行下面的數據確存入了數據庫,誰可以幫我想想辦法,或是由別的辦法顯現這樣的功能
for(int i=0; i<myDs.Tables[0].Rows.Count; i++)
{
strSql="insert into zhch_nianxiu (badge1,work_hour) values ('"+ myDs.Tables[0].Rows[i].ItemArray[0].ToString() +
"','"+ myDs.Tables[0].Rows[i].ItemArray[1].ToString() +"')";
try
{
myCmd=new OleDbCommand(strSql,conn);
myCmd.ExecuteNonQuery();
}
catch
{
int j=i+2;
Response.Write("<script language='javascript'>alert('第"+ j +"行導入失敗')</script>");
for(int k=0; k<myDs.Tables[0].Rows.Count; k++)
{
if(k!=i)
{
strSql="delete zhch_nianxiu where badge1='"+ myDs.Tables[0].Rows[k].ItemArray[0].ToString() + "'";
myCmd=new OleDbCommand(strSql,conn);
myCmd.ExecuteNonQuery();
}
}
}
1 25
2 40
k 25 這行類型錯誤
4 26
我想導入一批數據,本來我想如果有一行出錯數據不導入,但執行下面的代碼時,在出錯的行代碼上面的數據刪除了,但是出錯行下面的數據確存入了數據庫,誰可以幫我想想辦法,或是由別的辦法顯現這樣的功能
for(int i=0; i<myDs.Tables[0].Rows.Count; i++)
{
strSql="insert into zhch_nianxiu (badge1,work_hour) values ('"+ myDs.Tables[0].Rows[i].ItemArray[0].ToString() +
"','"+ myDs.Tables[0].Rows[i].ItemArray[1].ToString() +"')";
try
{
myCmd=new OleDbCommand(strSql,conn);
myCmd.ExecuteNonQuery();
}
catch
{
int j=i+2;
Response.Write("<script language='javascript'>alert('第"+ j +"行導入失敗')</script>");
for(int k=0; k<myDs.Tables[0].Rows.Count; k++)
{
if(k!=i)
{
strSql="delete zhch_nianxiu where badge1='"+ myDs.Tables[0].Rows[k].ItemArray[0].ToString() + "'";
myCmd=new OleDbCommand(strSql,conn);
myCmd.ExecuteNonQuery();
}
}
}
{
insert....
}private bool isnum(string s)
{
//判断s是不是数值型
}
而1楼所说的事务在.net下是很容易的。
OleDbConnection Conn = new OleDbConnection(ConnString);
Conn.Open();
OleDbCommand cmd=new OleDbCommand(Conn);
OleDbTransaction myTrans=Conn.BeginTransaction();
cmd.Transaction = myTrans;
try
{
for(int i=0;i<循环次数;i++)
{
//你的数据库插入操作
}
myTrans.Commit();
}
catch()
{
myTrans.Rollback()
}
finally
{
关闭数据库
}大体上就这样。随便写了一下。你自己调试一下。
这里可以转为c#:
http://www.developerfusion.co.uk/utilities/convertvbtocsharp.aspx
--------------------------------------------------------------
Public Sub Execute_SQL(ByVal Q As String) '执行数据库命令
If isConnect() Then
Dim sqlCM As New SqlCommand("", cnn)
Dim sqlTran As SqlTransaction = cnn.BeginTransaction(IsolationLevel.ReadCommitted, "myTran") '定义事务
Try
sqlCM.Transaction = sqlTran '启动事务
sqlCM.CommandText = Q
sqlCM.ExecuteNonQuery()
sqlTran.Commit() '执行事务
Catch ex As Exception
sqlTran.Rollback("myTran") '事务回滚
Show_Msg(ex.Message, errMsg)
Finally
closeDB()
GC.Collect()
End Try
End If
End Sub
Conn.Open();
OleDbCommand cmd=new OleDbCommand(Conn);
OleDbTransaction myTrans=Conn.BeginTransaction();
cmd.Transaction = myTrans;
try
{
for(int i=0;i<循环次数;i++)
{
数据库插入操作
}
myTrans.Commit();
}
catch()
{
myTrans.Rollback()
}
finally
{
关闭数据库
}
但是執行道cmd.Transaction = myTrans;出錯
Object reference not set to an instance of an object. 誰告訴我怎麼回事
conn.Open ();
OleDbCommand myCmd =new OleDbCommand();
OleDbTransaction myTrans=conn.BeginTransaction();
myCmd.Transaction = myTrans;
try
{
for(int i=0; i<myDs.Tables[0].Rows.Count; i++)
{ myCmd.CommandText= "insert into zhch_nianxiu (badge1,work_hour) values ('"+ myDs.Tables[0].Rows[i].ItemArray[0].ToString() + "','"+ myDs.Tables[0].Rows[i].ItemArray[1].ToString() +"')";
myCmd.ExecuteNonQuery();
}
myTrans.Commit();
try部分怎麼執行不了