1

データベースとの接続を作成するために使用するコード

private static string MySqlUsername, MySqlPassword, MySqlDatabase, MySqlHost;
        private static string ConnectionString;
        public static void CreateConnection(string user, string password, string database, string host)
        {
            MySqlUsername = user;
            MySqlHost = host;
            MySqlPassword = password;
            MySqlDatabase = database;
            ConnectionString = "Server=" + MySqlHost + ";Database='" + MySqlDatabase + "';Username='" + MySqlUsername + "';Password='" + MySqlPassword + "';Pooling=true; Max Pool Size = 160000; Min Pool Size = 0;CHARSET=utf8";
        }
        public static MySql.Data.MySqlClient.MySqlConnection MySqlConnection
        {
            get
            {
                MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
                conn.ConnectionString = ConnectionString;
                return conn;
            }
        }

私の問題は、そのコードでutf-8データベースから文字列を選択するときです

public void accf()
        {
            MySqlCommand cmd = new MySqlCommand(MySqlCommandType.SELECT);
            cmd.Select("med").Where("Name", MName.Text).Or("UID", MUID.Text).Execute();
            MySqlReader r = new MySqlReader(cmd);
            if (r.Read())
            {
                CharName.Text = r.ReadString("Name");
            }
            else
            {
                fnf.ForeColor = Color.Red;
                fnf.Text = "can't found anything";
                fnf.Visible = true;
            }
        }

Name の文字列が number であっても読み取ることができますが、anyname の場合、プログラムは何も見つからないと言いました。ここに表があります

DROP TABLE IF EXISTS `med`;
CREATE TABLE `med` (
  `Name` varchar(16) CHARACTER SET utf8 NOT NULL,
  `UID` bigint(18) unsigned NOT NULL,
  `Substance` varchar(45) CHARACTER SET utf8 NOT NULL,
  `Expiry` date DEFAULT NULL,
  `Type` tinyint(5) unsigned DEFAULT '10',
  `Note` varchar(18) DEFAULT NULL,
  PRIMARY KEY (`UID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

英語が下手で申し訳ありませんが、私の問題を解決するのに役立つことを願っています

4

1 に答える 1

1

テーブルが複数の行を返す場合のExecuteScalar()代わりに試すことができます。Execute()

于 2013-08-22T22:01:22.420 に答える