getting error with getint(0) in c#
本文关键字:in error with getint getting | 更新日期: 2023-09-27 18:14:30
在此代码中,我有一个错误读取列,我的数据库阅读器从查询中获得。错误在
这一行DbCom.CommandText = System.String.Format("INSERT into Cortex(IdDA,Vlsd) values({0},'yes')",DbReader.GetInt16(0));
他们说行或列中没有数据,但它确实存在。
public static void Main(string[] args)
{
using (OdbcConnection DbConnection = new OdbcConnection("DSN=savior"))
{
DbConnection.Open();
OdbcCommand DbCommand = DbConnection.CreateCommand();
DbCommand.CommandText = "SELECT IDA FROM Dchas";
try
{
DbReader = DbCommand.ExecuteReader();
int fCount = DbReader.FieldCount;
if (fCount > 0)
{
do
{
using (OdbcConnection DbConnect = new OdbcConnection("DSN=savior"))
{
DbConnect.Open();
OdbcCommand DbCom = DbConnect.CreateCommand();
DbCom.CommandText = System.String.Format("INSERT into Cortex(IdDA,Vlsd) values({0},'yes')",DbReader.GetInt16(0));
try
{
DbCom.ExecuteNonQuery();
}
catch (OdbcException ex)
{
Console.WriteLine("Executing the query2 failed.");
Console.WriteLine("The OdbcCommand returned the following message");
Console.WriteLine(ex.ToString());
return;
}
}
} while (DbReader.Read());
}
else
{
Console.WriteLine("Query affected row(s)");
return;
}
}
catch (OdbcException ex)
{
Console.WriteLine("Executing the query1 failed.");
Console.WriteLine("The OdbcCommand returned the following message");
Console.WriteLine(ex.ToString());
return;
}
}
}
在尝试访问DBReader数据之前,您正在进入do..while loop
而没有调用DBReader.Read
。
while(DBReader.Read())
{
.....
}
如果Reader查询没有返回任何记录
请注意,如果使用数据库已经提供的特性,可以节省大量代码(以及许多类似的潜在错误)。将记录从一个表复制到另一个表是您应该让数据库担心的事情:
public static void Main(string[] args)
{
using (var connection = new OdbcConnection("DSN=savior"))
{
const string Sql = "INSERT INTO Cortex( IdDA, Vlsd ) SELECT IDA, 'yes' FROM Dchas";
connection.Open();
using(var command = new OdbcCommand(Sql))
{
int numberOfRecords = command.ExecuteNonQuery();
Console.WriteLine("Copied {0} rows.", numberOfRecords);
}
}
}