String StrSqlConn = System.Configuration.ConfigurationManager.AppSettings["ConStr"];
SqlConnection conn = new SqlConnection(StrSqlConn);
conn.Open();
SqlCommand command = new SqlCommand();
command.Connection = conn;
SqlTransaction transaction = conn.BeginTransaction(); //Enlisting database
command.Transaction = transaction;
try
{
string strSql = " INSERT INTO td_pcdm_temp (Pcdm,Pcdm_1,Pcmc,Gbpcdm,Gbccdm) ";
strSql = strSql + " SELECT Pcdm,Pcdm_1,Pcmc,Gbpcdm,Gbccdm ";
strSql = strSql + " FROM OPENROWSET ('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver; SourceDB= ";
string filepath = System.IO.Path.GetDirectoryName(FileUpload1.PostedFile.FileName);//修改了IE8的Interent选项-安全-自定义级别-将文件上载到服务器时包含本地目录路径
strSql = strSql + filepath + "; SourceType=DBF','SELECT * FROM td_pcdm')"; string strSql2 = " UPDATE td_pcdm_temp SET Sfdm = " + DropDownList1.SelectedValue.ToString();
string strSql3 = " INSERT INTO td_pcdm(Sfdm,Pcdm,Pcmc,Gbpcdm,Gbccdm) SELECT Sfdm,Pcdm,Pcmc,Gbpcdm,Gbccdm FROM td_pcdm_temp";
string strSql4 = " DELETE FROM td_pcdm_temp"; command.CommandText = strSql;
command.ExecuteNonQuery();
//command.CommandText = strSql2;
//command.ExecuteNonQuery();
//command.CommandText = strSql3;
//command.ExecuteNonQuery();
//command.CommandText = strSql4;
//command.ExecuteNonQuery();
transaction.Commit();
Response.Write("<script languager='javascript'>alert('数据导入成功!');</script>");
Response.AddHeader("Refresh", "0");
}
catch(Exception ex)
{
transaction.Rollback(); //Abort transaction
Response.Write(ex);
//Response.Write("<script languager='javascript'>alert('数据导入失败!');</script>");
//Response.AddHeader("Refresh", "0");
}
finally
{
conn.Close();
}
strSql目的是把VF数据库导入到SQL SERVER中。
利用事务执行strSql的SQL语句就是不成功,但是strSql2,strSql3,strSql4可以成功,如果不用事务strSql可以执行成功,这是什么原因?
报错显示:
System.Data.SqlClient.SqlException: 服务器 'CHINA-32DC0D325' 上的 MSDTC 不可用。 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在 DaoRu_Data_t_jhk_DaoRu.Button1_Click(Object sender, EventArgs e) 位置 d:\Zhaoshengtongji\DaoRu_Data\t_jhk_DaoRu.aspx.cs:行号 84
SqlConnection conn = new SqlConnection(StrSqlConn);
conn.Open();
SqlCommand command = new SqlCommand();
command.Connection = conn;
SqlTransaction transaction = conn.BeginTransaction(); //Enlisting database
command.Transaction = transaction;
try
{
string strSql = " INSERT INTO td_pcdm_temp (Pcdm,Pcdm_1,Pcmc,Gbpcdm,Gbccdm) ";
strSql = strSql + " SELECT Pcdm,Pcdm_1,Pcmc,Gbpcdm,Gbccdm ";
strSql = strSql + " FROM OPENROWSET ('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver; SourceDB= ";
string filepath = System.IO.Path.GetDirectoryName(FileUpload1.PostedFile.FileName);//修改了IE8的Interent选项-安全-自定义级别-将文件上载到服务器时包含本地目录路径
strSql = strSql + filepath + "; SourceType=DBF','SELECT * FROM td_pcdm')"; string strSql2 = " UPDATE td_pcdm_temp SET Sfdm = " + DropDownList1.SelectedValue.ToString();
string strSql3 = " INSERT INTO td_pcdm(Sfdm,Pcdm,Pcmc,Gbpcdm,Gbccdm) SELECT Sfdm,Pcdm,Pcmc,Gbpcdm,Gbccdm FROM td_pcdm_temp";
string strSql4 = " DELETE FROM td_pcdm_temp"; command.CommandText = strSql;
command.ExecuteNonQuery();
//command.CommandText = strSql2;
//command.ExecuteNonQuery();
//command.CommandText = strSql3;
//command.ExecuteNonQuery();
//command.CommandText = strSql4;
//command.ExecuteNonQuery();
transaction.Commit();
Response.Write("<script languager='javascript'>alert('数据导入成功!');</script>");
Response.AddHeader("Refresh", "0");
}
catch(Exception ex)
{
transaction.Rollback(); //Abort transaction
Response.Write(ex);
//Response.Write("<script languager='javascript'>alert('数据导入失败!');</script>");
//Response.AddHeader("Refresh", "0");
}
finally
{
conn.Close();
}
strSql目的是把VF数据库导入到SQL SERVER中。
利用事务执行strSql的SQL语句就是不成功,但是strSql2,strSql3,strSql4可以成功,如果不用事务strSql可以执行成功,这是什么原因?
报错显示:
System.Data.SqlClient.SqlException: 服务器 'CHINA-32DC0D325' 上的 MSDTC 不可用。 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在 DaoRu_Data_t_jhk_DaoRu.Button1_Click(Object sender, EventArgs e) 位置 d:\Zhaoshengtongji\DaoRu_Data\t_jhk_DaoRu.aspx.cs:行号 84
解决方案 »
- asp.net验证控件的问题——在线急等啊
- 怎样在asp.net中用C#代码实现秒数的无刷新跳动
- 为什么在WIN2003中我设置好了IIS,可以跑ASP.NET的程序,但是WENSERVICE的程序却不能跑,报401的错误
- petshop3.0中的方法只有sqldatareader 的,如何能改写一个dataset 的,且要能使用它的重载方法,且要用PrepareCommand
- 哪个函数可以获取本页的地址,比如 http://localhost/x/a.aspx?id=55
- b/s系统中用户登陆的问题!
- 获取不了图片的src
- datagrid中dropdownlist绑定问题!!!
- 一个不明白的问题!!!!
- 开源的框架NFine如何换皮肤
- Gridview 中利用JS使模板列中textBox值为另外两列textBox值之积
- 用js动态 改变菜单按钮的效果
------------------http://www.supesoft.com/ArticleDisp.asp?ID=4092
http://blog.chinaunix.net/u/24475/showart_1979551.html