Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中获取getint(0)时出错#_C#_Sql Server - Fatal编程技术网

C# 在c中获取getint(0)时出错#

C# 在c中获取getint(0)时出错#,c#,sql-server,C#,Sql Server,在这段代码中,我在读取数据库读取器从查询中获取的列时出错。 错误在以下行中: DbCom.CommandText = System.String.Format("INSERT into Cortex(IdDA,Vlsd) values({0},'yes')",DbReader.GetInt16(0)); 他们说,在ligne或column中没有数据,但它确实存在 public static void Main(string[] args) { using

在这段代码中,我在读取数据库读取器从查询中获取的列时出错。 错误在以下行中:

DbCom.CommandText = System.String.Format("INSERT into Cortex(IdDA,Vlsd) values({0},'yes')",DbReader.GetInt16(0));
他们说,在ligne或column中没有数据,但它确实存在

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;
                }
            }
        }

您正在输入
do..while循环
,而无需调用
DBReader.Read,然后再尝试访问DBReader数据

最好的解决方法是将循环更改为

while(DBReader.Read())
{
    .....

}

如果读卡器查询没有返回任何记录,这将避免进入循环。请注意,如果使用数据库已经提供的功能,您可以保存大量代码(以及许多潜在的错误,如该错误)。将记录从一个表复制到下一个表应该让数据库担心:

    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);
            }
        }
     }

我真的不明白你在这里写了什么?你从数据库中提取数据,然后逐个插入。那太没效率了。您可以指示数据库将其复制到数据库中,而无需通过网络将其推送到您的计算机上,然后将其逐个推回到数据库中。上面的6行与你的20行相同。是的,我同意,但在我的真实代码中,我确实有很多操作要应用于每个数据,而且,程序有时会遇到一些数据的其他问题,我必须知道它并捕获错误名称和。。。。为了每一个人。