0

ここでいくつかの質問/回答を見てきましたが、どれも役に立たないようです

mySQLデータベースからデータを選択する以下の方法があります

エラーが発生した行を強調表示しました。

渡される文字列 sql はSELECT * FROM tblDtCategory です。

OpenDbConnection(dbConn)) は、接続を開いて問題を返すことです。これは正常に実行されます

なぜこのエラーが発生するのか理解できません。アダプターを見るとすべて問題ないようです。データベースに追加または更新しようとしていないので、タイプが一致しないことはありません...

    public DataTable Select(string sql)
    {            
        MySqlConnection dbConn = new MySqlConnection(DbConnection);

        MySqlDataAdapter adapter = new MySqlDataAdapter();


        DataTable retTable = new DataTable();


        if (OpenDbConnection(dbConn))
        {
            try
            {
                adapter.SelectCommand = new MySqlCommand(sql, dbConn);
                adapter.Fill(retTable); // error here
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);

                return null;
            }
            finally
            {
                CloseDbConnection(dbConn);
            }
        }
        else
            return null;

        return retTable;
    }

データベースに接続されている必要があることを示す画像

ここに画像の説明を入力

返すべきものを示す画像 ここに画像の説明を入力

**レコード: 3-newcat-1 は、select ステートメントを insert ステートメントに変更することでアプリから追加されたことに注意してください - 問題ありません (!)

スタックトレース:

   at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   at System.Int32.Parse(String s, IFormatProvider provider)
   at MySql.Data.Types.MySqlInt32.MySql.Data.Types.IMySqlValue.ReadValue(MySqlPacket packet, Int64 length, Boolean nullVal)
   at MySql.Data.MySqlClient.NativeDriver.ReadColumnValue(Int32 index, MySqlField field, IMySqlValue valObject)
   at MySql.Data.MySqlClient.Driver.ReadColumnValue(Int32 index, MySqlField field, IMySqlValue value)
   at MySql.Data.MySqlClient.ResultSet.get_Item(Int32 index)
   at MySql.Data.MySqlClient.MySqlDataReader.GetFieldValue(Int32 index, Boolean checkNull)
   at MySql.Data.MySqlClient.MySqlDataReader.GetValue(Int32 i)
   at MySql.Data.MySqlClient.MySqlDataReader.GetValues(Object[] values)
   at System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)
   at System.Data.ProviderBase.SchemaMapping.LoadDataRow()
   at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
   at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
   at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
   at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   at Downtime_Aquisition_Administrator.MySQLServer.Select(String sql) in d:\VS2012\Projects\Downtime Acquisition\Downtime Aquisition Administrator\Downtime Aquisition Administrator\frmMain.cs:line 1996
4

1 に答える 1

0

OK は問題を見つけました - 男子生徒のエラー (笑)

mySQL サーバーにアクセスしてセットアップを再度実行しましたが、テキスト形式のドロップダウン オプションの 1 つではなく UTF-8 を選択したため、正常に動作するようになりました。

..そして私はばかだと感じます:)

于 2013-07-22T08:13:52.150 に答える