1

面白い問題があります。このクエリを実行したいのですが、次のエラーが発生します。

「指定されたキャストは無効です。」

どんな体でも私を助けることができますか?

ここに私のコードがあります:

 string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection sqlconn = new SqlConnection(connStr);
        SqlCommand sqlcmd = new SqlCommand();
        sqlcmd = new SqlCommand("SELECT max(ID) FROM AddNews ", sqlconn);

        sqlconn.Open();
        int ID = ((int)sqlcmd.ExecuteScalar());
        sqlconn.Close();
4

6 に答える 6

1

結果が得られず、戻り値がnullになる場合があります。

試してみてください

int? MaxID = sqlcmd.ExecuteScalar() as int?;

MaxIDがnullでないかどうかを確認します。

于 2013-02-01T08:22:23.937 に答える
1
you have to change as follow


int ID=int.Parse(cmd.ExecuteScalar().ToString());
于 2013-02-01T08:32:19.687 に答える
1

結果は SQL レベルで int にキャストされます。戻り値は int になるか、null の場合はデフォルトで 0 になります。

Convert.ToInt32(sqlCmd.ExecuteScalar())(int) またはの代わりに使用できます。(int?)sqlCmd.ExecuteScalar() ?? 0;

于 2013-02-01T08:23:47.940 に答える
0

値が最初にintであるかどうかをテストできます

int ID;
int.TryParse(sqlcmd.ExecuteScalar(), out ID);
于 2013-02-01T08:30:16.837 に答える
0

((int)value)使用する代わりにConvert.ToInt32(value)。それが動作します。

于 2013-02-01T08:24:08.720 に答える
0
sqlcmd.ExecuteScalar()); 

int ではなくオブジェクトを返します。

これを試して

Object s= cmd.ExecuteScalar()
int x=Integer.Parse(s.ToString))
于 2013-02-01T08:27:40.210 に答える