private void btnSaveUserInfo_Click(object sender, EventArgs e)
        {
            try
            {
                byte[] bytes = { 0 };
                Template.Serialize(ref bytes);//这个是我用的软件开发包中的一个接口
                string strconn = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=fingerticket;User=root; Password=123456;Option=3;";
                OdbcConnection myConnection = new OdbcConnection(strconn);
                myConnection.Open();
                string cmd = "INSERT INTO fingerticket.tb_user(user_name,user_template) Values(?textname,?str)";                OdbcCommand command = new OdbcCommand(cmd, myConnection);                OdbcParameter param1 = new OdbcParameter("?textname", MySqlDbType.VarChar);
                param1.Value = textBoxUserid.Text;
                command.Parameters.Add(param1);                OdbcParameter param2 = new OdbcParameter("?str", MySqlDbType.Blob);
                param2.Value = bytes;
                command.Parameters.Add(param2);
                command.Prepare();
                command.ExecuteNonQuery();
                myConnection.Close();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }运行完成后会显示对话框,说:
ERROR[42000][MySQL][ODBC 5.1 Driver][mysqld-5.5.9]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'textname,latin1'......

解决方案 »

  1.   

    Template.Serialize(ref bytes);//这个是我用的软件开发包中的一个接口
    这一句先拿掉试下看如何? 要不就是你的odbc驱动有问题,驱动有问题的事情太多了。你还不用用mysql.dll,直接引用后,用原生的dll直接连接,跳过odbc.
      

  2.   

    直接引用mysql.dll?如果把这一句删除后,那我存什么数据啊?那个是引用行不
      

  3.   

    问题已解决,代码如下:
                    byte[] bytes = { 0 };
                    Template.Serialize(ref bytes);
                    using (MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection())
                    {
                        conn.ConnectionString = constr;
                        MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
                        cmd.CommandText = "insert into tb_user(user_name,user_template)" + "values(@in_username,@in_usertemplate)";
                        cmd.CommandType = CommandType.Text;
                        cmd.Parameters.Add("@in_username", MySql.Data.MySqlClient.MySqlDbType.VarChar);
                        cmd.Parameters.Add("@in_usertemplate", MySql.Data.MySqlClient.MySqlDbType.Blob);                    cmd.Parameters[0].Value = textBoxUserid.Text;
                        cmd.Parameters[1].Value = bytes;
                        cmd.Connection = conn;
                        conn.Open();
                        cmd.Prepare();
                        int affectedrows = cmd.ExecuteNonQuery();
                        cmd.Dispose();
                        conn.Close();