在公司调试挺好的。
现在人在现场,没有编程环境,不清楚到底是那地方出错了,求高手帮忙分析下代码,看在哪地方加点什么东西能过关。
万分感激
SqlConnection connection = new SqlConnection(connnectionString); string sql = "select top 1 DatapointID from DatapointValue2 order by LastModified desc"; SqlCommand cmdDatapointID = new SqlCommand(sql, connection);// 定义Command对象 connection.Open();
object a = cmdDatapointID.ExecuteScalar();
connection.Close();
int ab = Convert.ToInt32(a); /*___________________________________________取PropID值______________________________________*/
SqlConnection connectionPropID = new SqlConnection(connnectionString); string sqlPropID = "select top 1 PropID from DatapointValue2 order by LastModified desc"; SqlCommand cmdPropID = new SqlCommand(sqlPropID, connectionPropID);// 定义Command对象 connectionPropID.Open();
object objCmdPropID = cmdPropID.ExecuteScalar();
connectionPropID.Close();
int propID = Convert.ToInt32(objCmdPropID);
/****************************************根据DatapointID取出时间********************************************/
OdbcConnection connection2 = new OdbcConnection(connnectionString2); string sql2 = "select LastModified from DBA.DatapointValue where DatapointID=" + ab + "and PropID=" + propID; OdbcCommand cmd3 = new OdbcCommand(sql2, connection2);// 定义Command对象 connection2.Open();
object abc = cmd3.ExecuteScalar();
connection2.Close();
double abcd = Convert.ToDouble(abc); /*******************************************Sybase数据库中的表数据迁移到Server中**********************************************/
OdbcConnection conn1 = new OdbcConnection();
SqlConnection conn2 = new SqlConnection();
OdbcCommand cmd1 = new OdbcCommand();
SqlCommand cmd2 = new SqlCommand();
System.Data.Odbc.OdbcDataReader dr;
conn1.ConnectionString = connnectionString2;
conn2.ConnectionString = connnectionString; cmd1.Connection = conn1;
cmd2.Connection = conn2;
cmd1.CommandText = "SELECT DatapointID,Value,Persist,PropID,LastModified FROM DBA.DatapointValue where LastModified >" + abcd;
conn1.Open();
dr = cmd1.ExecuteReader();
conn2.Open();
while (dr.Read())
{
string insertString = "INSERT INTO DatapointValue2(DatapointID,Value,Persist,PropID,LastModified) VALUES ('{0}','{1}','{2}','{3}','{4}')";
insertString = string.Format(insertString, dr[0], dr[1], dr[2], dr[3], dr[4]); cmd2.CommandText = insertString;
cmd2.ExecuteNonQuery();
}
dr.Close();
conn1.Close();
conn2.Close(); label2.Text = "第" + i + "次传递成功!3分钟后再次传递...";
i = i + 1;
btn_Stop.Enabled = true;
现在人在现场,没有编程环境,不清楚到底是那地方出错了,求高手帮忙分析下代码,看在哪地方加点什么东西能过关。
万分感激
SqlConnection connection = new SqlConnection(connnectionString); string sql = "select top 1 DatapointID from DatapointValue2 order by LastModified desc"; SqlCommand cmdDatapointID = new SqlCommand(sql, connection);// 定义Command对象 connection.Open();
object a = cmdDatapointID.ExecuteScalar();
connection.Close();
int ab = Convert.ToInt32(a); /*___________________________________________取PropID值______________________________________*/
SqlConnection connectionPropID = new SqlConnection(connnectionString); string sqlPropID = "select top 1 PropID from DatapointValue2 order by LastModified desc"; SqlCommand cmdPropID = new SqlCommand(sqlPropID, connectionPropID);// 定义Command对象 connectionPropID.Open();
object objCmdPropID = cmdPropID.ExecuteScalar();
connectionPropID.Close();
int propID = Convert.ToInt32(objCmdPropID);
/****************************************根据DatapointID取出时间********************************************/
OdbcConnection connection2 = new OdbcConnection(connnectionString2); string sql2 = "select LastModified from DBA.DatapointValue where DatapointID=" + ab + "and PropID=" + propID; OdbcCommand cmd3 = new OdbcCommand(sql2, connection2);// 定义Command对象 connection2.Open();
object abc = cmd3.ExecuteScalar();
connection2.Close();
double abcd = Convert.ToDouble(abc); /*******************************************Sybase数据库中的表数据迁移到Server中**********************************************/
OdbcConnection conn1 = new OdbcConnection();
SqlConnection conn2 = new SqlConnection();
OdbcCommand cmd1 = new OdbcCommand();
SqlCommand cmd2 = new SqlCommand();
System.Data.Odbc.OdbcDataReader dr;
conn1.ConnectionString = connnectionString2;
conn2.ConnectionString = connnectionString; cmd1.Connection = conn1;
cmd2.Connection = conn2;
cmd1.CommandText = "SELECT DatapointID,Value,Persist,PropID,LastModified FROM DBA.DatapointValue where LastModified >" + abcd;
conn1.Open();
dr = cmd1.ExecuteReader();
conn2.Open();
while (dr.Read())
{
string insertString = "INSERT INTO DatapointValue2(DatapointID,Value,Persist,PropID,LastModified) VALUES ('{0}','{1}','{2}','{3}','{4}')";
insertString = string.Format(insertString, dr[0], dr[1], dr[2], dr[3], dr[4]); cmd2.CommandText = insertString;
cmd2.ExecuteNonQuery();
}
dr.Close();
conn1.Close();
conn2.Close(); label2.Text = "第" + i + "次传递成功!3分钟后再次传递...";
i = i + 1;
btn_Stop.Enabled = true;
解决方案 »
- c# 用 exchange 发送邮件问题
- 这个命名空间的问题
- 小妹求救,网站表格样式的问题
- 我想用c#获取数据库脚本,请高手指点
- 异常详细信息: System.InvalidOperationException: 数据源的类型无效。它必须是 IListSource、IEnumerable 或 IDataSource。
- 是程序员的就进来看看。为什么SelectCommand就不用ExecuteNonQuery()
- 懂多线程的进来看下!!
- 关于.NET做的软件问题.
- .net GridView_PageIndexChanging分页问题
- 对于含多层对象引用的复杂结构怎样进行序列化
- 求助!!C#如何打开EXCEL文件并且进行修改???
- c# 本地运行远程机器上EXE文件
也有可能是 int propID = Convert.ToInt32(objCmdPropID);没有环境,就自己模拟条件在sql里查询一下吧
object a = cmdDatapointID.ExecuteScalar();
connection.Close();
MessageBox.Show("1111111");
int ab = Convert.ToInt32(a);
MessageBox.Show("2222222");
/*___________________________________________取PropID值______________________________________*/
SqlConnection connectionPropID = new SqlConnection(connnectionString); string sqlPropID = "select top 1 PropID from DatapointValue2 order by LastModified desc"; SqlCommand cmdPropID = new SqlCommand(sqlPropID, connectionPropID);// 定义Command对象 connectionPropID.Open();
object objCmdPropID = cmdPropID.ExecuteScalar();
connectionPropID.Close(); MessageBox.Show("33333"); int propID = Convert.ToInt32(objCmdPropID); MessageBox.Show("44444");
MessageBox.Show("44444");
/****************************************根据DatapointID取出时间********************************************/
OdbcConnection connection2 = new OdbcConnection(connnectionString2); string sql2 = "select LastModified from DBA.DatapointValue where DatapointID=" + ab + "and PropID=" + propID; OdbcCommand cmd3 = new OdbcCommand(sql2, connection2);// 定义Command对象 connection2.Open();
object abc = cmd3.ExecuteScalar();
connection2.Close();
double abcd = Convert.ToDouble(abc);
MessageBox.Show("55555");知道位置了..
MessageBox.Show("44444");显示出来了
MessageBox.Show("55555");没有显示
应该是一楼说的abc转换的问题,这地方应该怎么修改。
object abc = cmd3.ExecuteScalar();
connection2.Close();
double abcd = Convert.ToDouble(abc);--------------------------------------------------------------
你的sql 语句返回的是空的结果集但你使用的是 ExecuteScalar 读取,自然就是DBNull而DBNull 是不能转换为.net 的基础类型的你可以判断 cmd3.ExecuteScalar() 是否等于DBNull 也可以使用 sql 的isnull 函数 ,当指定表达式为null 时(sql),设置为一个指定的值
if(abc!=null && abc!=System.DBNull.Value)
abcd=Convert.ToDouble(abc);
object o;
int? i;
i=(o is System.DBNull)? null:(int)o;
感谢各位回帖!!学习了!!
水平有限,给分不对的地方请多多包含。