![](/img/trans.png)
[英]Specified cast is not valid while fetching column details from SQL Server
[英]Specific cast is not valid while converting SQL Server data to Array
數據庫:
我嘗試將SQL Server數據轉換為數組,但出現錯誤:
特定的強制轉換無效
這是我的代碼:
string query = "select part1,part2,part3 from Table_3 where id ='" + textBox1.Text + "'";
int[] arr = new int[] { };
SqlCommand cmd = new SqlCommand(query, con);
SqlDataReader myReader;
try
{
con.Open();
myReader = cmd.ExecuteReader();
while (myReader.Read())
{
arr[i] = myReader.GetInt16(1);
i = i+1;
}
con.Close();
MessageBox.Show(arr[0].ToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
這里有兩個問題。 最可能的直接問題是數據實際上不是Int16
通常Int32
( int
)更常見,因此GetInt16
可能是錯誤的。
數組不可調整大小。 如果創建零長度數組,則它將始終為零長度 。 您不能為其添加任何值。
我覺得很奇怪 ,您正在閱讀四列,但僅消耗第二列-但這實際上不會導致失敗。
您似乎實際上只想要第一個值,而不是全部都需要-甚至需要一個數組嗎?
有一些與配置閱讀器有關的事情,但是很容易解決。
並且:永遠不要將輸入連接到SQL。
解決所有這些問題的最簡單方法是使用“ Dapper”之類的工具:
int[] arr = con.Query<int>("select part2 from Table_3 where id = @id",
new { id = textBox1.Text }).ToArray();
或僅針對單個(第一個)結果:
int val = con.QueryFirst<int>("select part2 from Table_3 where id = @id",
new { id = textBox1.Text });
注意:如果數據實際上定義為bit
,那么您將需要.NET中的bool
/ Boolean
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.