我試圖做一個「助手」類,您只需傳遞驅動程序和參數,並且類爲您執行連接和連接字符串程序集。用於通用訪問的IDataReader
我一直在使用System.Data的接口,如IDataReader,IDbConnection。
現在使用MySQL進行測試後,代碼運行良好,但只要我爲SQL Server(Microsoft)指出並配置它,它就不會返回任何處理過的行。我做了一些調試,來自SQL服務器的信息出現在IDataReader中,但似乎我無法迭代它?
我當前的代碼:在助手類
try
{
factory = System.Data.Common.DbProviderFactories.GetFactory(driver);
_con = factory.CreateConnection();
_con.ConnectionString = buildConnectionString.ToString();
_con.Open();
}
catch (System.Data.Common.DbException ex)
{
_con = null;
throw ex;
}
catch (Exception ex)
{
_con = null;
throw ex;
}
return _con;
一個我通過我的司機爲System.Data.SqlClient的 SQL Server和MySql.Data此刻
連接方法。 MySQL的MySqlClient。
System.Data.IDataReader reader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
while (reader.Read())
{
System.Data.DataRow row = table.NewRow();
// Insert info from Reader into the Row
table.Rows.Add(row);
}
reader.Close();
我懷疑它是與IDataReader的是如何試圖處理的類型,但在此無法找到任何文件,因爲它是可以正常使用的MySQL而不是SQL服務器?任何幫助?
不相關,但是你的錯誤處理沒有什麼特別的用處,並且有很多傷害 - 特別是在錯誤情況下沒有處理連接,並且你正在破壞堆棧跟蹤。一個單一的'catch {if(conn!= null){conn.Dispose();拋出; }'會更加可取,IMO –
顯示閱讀器代碼,你有沒有進入'while(reader.Read())'塊?如果沒有,我懷疑你的SQL是責任;這應該工作... –
感謝您的提示將相應地改變它。 –