0

我正在尝试执行 SQL 选择语句来检索我的 id,然后增加 id。我可以从数据库中选择就好了。但是当我尝试将字符串转换为 int 时,我得到了格式异常的错误被捕获

输入字符串的格式不正确。

这是我的代码:

var sql = new SQL_Statements();
var string_sql_id ="";
var string_sql_select = "select * from is_inventory where id =(select max(id) from is_inventory)";

var sql_ds = sql.SelectFromDB(string_sql_select);

int DataIndex;

if (sql_ds.Tables["CurData"].Rows.Count > 0)
   for (DataIndex = 0; DataIndex <= sql_ds.Tables["CurData"].Rows.Count - 1; DataIndex++)
   {
       (sql_ds.Tables["CurData"].Rows[DataIndex]["id"]).ToString();
       string_sql_id ="CurData";
       var int_sql_id = Convert.ToInt32(string_sql_id);
       ++int_sql_id;
   }

在代码的倒数第二行是它引发异常的地方。我曾尝试将转换更改为其他东西,例如 double,但这也不起作用。在此先感谢您的帮助。

4

5 回答 5

3

出于某种原因,您正在获取值然后丢弃它,然后尝试将字符串转换CurData为 int。

(sql_ds.Tables["CurData"].Rows[DataIndex]["id"]).ToString();
string_sql_id ="CurData";
var int_sql_id = Convert.ToInt32(string_sql_id);

的值string_sql_id总是CurData那个时候——你怎么期望它是别的东西?

数据表中的值应该已经是一个整数,因此您不需要任何解析:

var id = (int) sql_ds.Tables["CurData"].Rows[DataIndex]["id"];

(您可能会发现它是 along而不是 an int- 这取决于您的字段类型。)

您应该尽可能避免不必要的字符串转换。在这种情况下,根本不清楚您为什么要使用 a DataTable。您可以只使用DataReader- 如果您将代码更改为仅选择最大 ID,则可以只使用ExecuteScalar来获取单个值。您当前的方法非常复杂。

于 2013-05-22T15:01:21.407 回答
3
string_sql_id ="CurData";
var int_sql_id = Convert.ToInt32(string_sql_id);

You're trying co convert to int string "CurData"

于 2013-05-22T15:02:06.957 回答
1

您正在尝试将string“CurData”转换为引发异常的整数。

 string_sql_id ="CurData";
 var int_sql_id = Convert.ToInt32(string_sql_id);

我假设您的意思是分配string_sql_idRow ID

 string_sql_id = sql_ds.Tables["CurData"].Rows[DataIndex]["id"]).ToString();

然后你可以尝试转换:

 var int_sql_id = Convert.ToInt32(string_sql_id);
于 2013-05-22T15:00:41.403 回答
1

在转换行之前的行中,您设置string_sql_id ="CurData";. "CurData" 不是整数,尝试将其转换为整数是行不通的。

试试这个;

string_sql_id = (sql_ds.Tables["CurData"].Rows[DataIndex]["id"]).ToString();
于 2013-05-22T15:00:45.407 回答
0

您正在尝试将原始字符串类型转换为 Int。所以这与你的逻辑有关。

string_sql_id ="CurData";
var int_sql_id = Convert.ToInt32(string_sql_id);

注意:如果您打算使用身份(增量字段),那么我建议不要显式创建增量字段,例如身份列。尝试使用为您生成它的数据库内置功能。谷歌一下如何在 SQL 或您喜欢的数据库中定义 AUTO INCREMENT 字段。

于 2013-05-22T15:12:38.220 回答