C#与MySQLINSERT参数大家好,我使用的是VisualC#2010和MySQL5.1.48版社区。我希望你能帮我解决这个问题。我发现它对我不起作用。我错过了什么?字符串connString=ConfigurationManager.ConnectionStrings["default"].ConnectionString;MySqlConnectionconn=newMySqlConnection(connString);conn.Open();MySqlCommandcomm=conn.CreateCommand();comm.CommandText="INSERTINTOroom(person,address)VALUES(@person,@address)";comm.Parameters.Add("@person","Myname");comm.Parameters.Add("@address","Myaddress");comm.ExecuteNonQuery();conn.Close();当我尝试编译它时。它说:Personcolumncannotbenull编辑:但是当我尝试这段代码时。comm.CommandText="INSERTINTOroom(person,address)VALUES('Myname','Myaddress')";但是这段代码容易受到sql注入的攻击,但是它可以工作并且不会给我一个错误。编辑:我试过用这个。我在这里找到它所以我认为它会起作用,但给我这个错误索引(从零开始)必须大于或等于零并且小于参数列表的大小。有任何想法吗?字符串a="我的名字";MySqlCommandcmd=newMySqlCommand();cmd.Connection=conn;cmd.CommandText="INSERTINTOroom(person,address)VALUES(?,?)";//cmd.Prepare();cmd.Parameters.Add("person",MySqlDbType.VarChar).Value=a;cmd.Parameters.Add("地址",MySqlDbType.VarChar).Value="我的地址";cmd.ExecuteNonQuery();//在这里,我在这一行中遇到了一个例外任何帮助将不胜感激。编辑:解决了我使用这段代码:cmd.CommandText="INSERTINTOroom(person,address)VALUES(?person,?address)";cmd.Parameters.Add("?person",MySqlDbType.VarChar).Value="myname";cmd.Parameters.Add("?address",MySqlDbType.VarChar).Value="myaddress";cmd.ExecuteNonQuery();谢谢!您可以使用AddWithValue方法,如:stringconnString=ConfigurationManager.ConnectionStrings["default"].ConnectionString;MySqlConnectionconn=newMySqlConnection(connString);conn.Open();MySqlCommandcomm=conn.CreateCommand();comm.CommandText="INSERTINTOroom(person,address)VALUES(@person,@address)";comm.Parameters.AddWithValue("@person","Myname");comm.Parameters.AddWithValue("@address","Myaddress");comm.ExecuteNonQuery();conn.Close();要么尝试使用?而不是@,例如:stringconnString=ConfigurationManager.ConnectionStrings["default"].ConnectionString;MySqlConnectionconn=newMySqlConnection(connString);conn.Open();MySqlCommandcomm=conn.CreateCommand();comm.CommandText="INSERTINTOroom(person,address)VALUES(?person,?address)";comm.Parameters.Add("?person","Myname");comm.Parameters.Add("?address","Myaddress");comm.ExecuteNonQuery();conn.Close();希望这有助于...使用AddWithValue方法:comm.Parameters.AddWithValue("@person","Myname");comm.Parameters.AddWithValue("@address","Myaddress");我遇到了同样的问题-你最后试过了吗?用sigil而不是@并且它起作用了根据文档:注意。提供程序的早期版本使用“@”符号来标记SQL中的参数。这与MySQL用户变量不兼容,因此提供程序现在使用'?'SQL中定位参数的表示法。要支持遗留代码,可以在连接字符串上设置“oldsyntax=yes”。如果这样做,请注意,如果您无法定义要在SQL中使用的参数,则不会抛出异常。真的吗?如果有人尝试使用所谓的旧语法,为什么不抛出异常?20行计划耗水几个小时...MySQL::MySqlCommand三件事:使用一个using语句,使用AddWithValue和带?的前缀参数,并将AllowUserVariables=True添加到连接字符串。字符串connString=ConfigurationManager.ConnectionStrings["default"].ConnectionString;使用(varconn=newMySqlConnection(connString)){conn.Open();varcomm=conn.CreateCommand();comm.CommandText="INSERTINTOroom(person,address)VALUES(@person,@address)";comm.Parameters.AddWithValue("?person","Myname");comm.Parameters.AddWithValue("?地址","我的地址");comm.ExecuteNonQuery();有关命令用法的更多信息,另请参阅http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx,以及http://dev。mysql.com/doc/refman/5.1/en/connector-net-connection-options.html有关“允许用户变量”选项的信息(仅在5.2.2及更高版本中受支持)。尝试使用mysql-connector-net-5.1.7-noinstall从带有VisualStudio(2015)的Windows窗体应用程序插入数据时,我遇到了类似的问题。我不是C#专家。所以修复所有东西大约需要2个小时。以下代码最近起作用:stringconnetionString=null;connetionString="server=localhost;database=device_db;uid=root;pwd=123;";使用(MySqlConnectioncn=newMySqlConnection(connetionString)){try{stringquery="INSERTINTOtest_table(user_id,user_name)VALUES(?user_id,?user_name);";cn.打开();使用(MySqlCommandcmd=newMySqlCommand(query,cn)){cmd.Parameters.Add("?user_id",MySqlDbType.Int32).Value=123;cmd.Parameters.Add("?user_name",MySqlDbType.VarChar).Value="测试用户名";cmd.ExecuteNonQuery();}}catch(MySqlExceptionex){MessageBox.Show("添加mysql行时出错。错误:"+ex.Message);}}comm.Parameters.Add("person","Myname");我做的就是这样的。串人;字符串地址;人=你的价值;地址=你的价值;字符串connString=ConfigurationManager.ConnectionStrings["default"].ConnectionString;MySqlConnectionconn=newMySqlConnection(connString);创建命令();comm.CommandText="INSERTINTOroom(person,address)VALUES('"+person+"','"+address+"')";comm.ExecuteNonQuery();conn.Close();如果需要,请尝试调整“SqlDbType”中的代码以匹配您的数据库类型并使用:comm.Parameters.Add("@person",SqlDbType.VarChar).Value=MyName;或者:comm.Parameters.AddWithValue("@person",Myname);这应该可行,但请记住使用Command.Parameters.Add(),您可以定义特定的SqlDbType并使用Command.Parameters.AddWithValue(),它会尝试根据参数值隐式获取SqlDbType,如果它不能隐式转换数据类型。希望这可以帮助。试试这个,它有效。以上就是C#学习教程:C#withMySQLINSERTparameters。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——MySqlCommanddbcmd=_conn.CreateCommand();dbcmd.CommandText=sqlCommandString;dbcmd.ExecuteNonQuery();longimageId=dbcmd.LastInsertedId;本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
