我想在Winforms中编写一个小型应用程序,在其中我可以写一些单词,然后使用ADO.net将它们写到SQL数据库中。
当我想用一个占位符写一个字符串时遇到麻烦:
Give me your '%s' right now!
我的数据库中记录的是:
Give me your **"%s"** right now!
我该如何克服通过传输到我的数据库的C#更改字符串?
这是我的代码的一部分:
public virtual int Split(global::System.Nullable<int> ID, object SplitXMLDoc, string CreatedBy) { global::System.Data.SqlClient.SqlCommand command = this.CommandCollection[4]; if ((ID.HasValue == true)) { command.Parameters[1].Value = ((int)(ID.Value)); } else { command.Parameters[1].Value = global::System.DBNull.Value; } if ((SplitXMLDoc == null)) { command.Parameters[2].Value = global::System.DBNull.Value; } else { command.Parameters[2].Value = ((object)(SplitXMLDoc)); } if ((CreatedBy == null)) { command.Parameters[3].Value = global::System.DBNull.Value; } else { command.Parameters[3].Value = ((string)(CreatedBy)); } global::System.Data.ConnectionState previousConnectionState = command.Connection.State; if (((command.Connection.State & global::System.Data.ConnectionState.Open) != global::System.Data.ConnectionState.Open)) { command.Connection.Open(); } int returnValue; try { returnValue = command.ExecuteNonQuery(); } finally { if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { command.Connection.Close(); } } return returnValue; }
您使用参数化的sql。
string val = "'%s'".Replace("'","\""); string sql = "INSERT Into Table1 (value) values (@Value)"; SqlCommand cmd = new SqlCommand(sql, connection); cmd.Parameters.AddWithValue("@Value",val); cmd.ExecuteNonQuery();