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'......
{
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'......
这一句先拿掉试下看如何? 要不就是你的odbc驱动有问题,驱动有问题的事情太多了。你还不用用mysql.dll,直接引用后,用原生的dll直接连接,跳过odbc.
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();