将字符串转换为int,用于SQL数据库调用
本文关键字:用于 SQL 数据库 调用 int 字符串 转换 | 更新日期: 2023-09-27 18:15:03
我正试图执行一个SQL select语句来检索我的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的其他类型,但也没有成功。提前感谢您的帮助。
由于某种原因,您要获取值,然后丢弃它,然后尝试将字符串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"];
(您可能会发现它是long
而不是int
——这取决于您的字段类型。(
您应该尽可能避免不必要的字符串转换。在这种情况下,根本不清楚为什么要使用DataTable
。您可以只使用DataReader
,如果您将代码更改为只选择最大ID,那么您只可以使用ExecuteScalar
来获得单个值。你目前的做法非常复杂。
string_sql_id ="CurData";
var int_sql_id = Convert.ToInt32(string_sql_id);
您正在尝试共同转换为int字符串"CurData">
在转换行之前的行中,设置string_sql_id ="CurData";
。"CurData"不是整数,尝试将其转换为整数将不起作用。
试试这个;
string_sql_id = (sql_ds.Tables["CurData"].Rows[DataIndex]["id"]).ToString();
您正试图将string
"CurData"转换为引发异常的整数。
string_sql_id ="CurData";
var int_sql_id = Convert.ToInt32(string_sql_id);
我想你的意思是把string_sql_id
分配给Row ID
:
string_sql_id = sql_ds.Tables["CurData"].Rows[DataIndex]["id"]).ToString();
然后你可以尝试转换:
var int_sql_id = Convert.ToInt32(string_sql_id);
您正在尝试将基元字符串类型转换为Int。因此,这与您的逻辑有关。
string_sql_id ="CurData";
var int_sql_id = Convert.ToInt32(string_sql_id);
注意:如果您打算使用Identity(递增字段(,则我建议不要显式创建递增字段,例如Identity列。试着使用为您生成数据库的内置功能。在谷歌上搜索如何在SQL或您喜欢的数据库中定义AUTO INCREMENT字段。