有一个相关的问题: 将parameter passing给SQLCommand的最佳方法是什么? 但我想知道这些差异是什么,以及是否有不同的方式有任何问题。 我通常使用这样的结构: using (SqlConnection conn = new SqlConnection(connectionString)) using (SqlCommand cmd = new SqlCommand(SQL, conn)) { cmd.CommandType = CommandType.Text; cmd.CommandTimeout = Settings.Default.reportTimeout; cmd.Parameters.Add("type", SqlDbType.VarChar, 4).Value = type; cmd.Connection.Open(); using (SqlDataAdapter adapter = new SqlDataAdapter(cmd)) { adapter.Fill(ds); } //use data } 现在有几种方法来添加cmd参数,我想知道哪个是最好的: cmd.Parameters.Add("@Name", SqlDbType.VarChar, 20).Value = "Bob"; cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = "Bob"; cmd.Parameters.Add("@Name").Value = […]
我正在尝试使用用户提供的数据创build一个SQL语句。 我使用类似这样的代码: var sql = "INSERT INTO myTable (myField1, myField2) " + "VALUES ('" + someVariable + "', '" + someTextBox.Text + "');"; var cmd = new SqlCommand(sql, myDbConnection); cmd.ExecuteNonQuery(); 然而, 这在用户input包含单引号(例如O'Brien )时失败, 插入date时间值和时,我似乎无法得到正确的格式 人们不断告诉我,我不应该这样做,因为“SQL注入”。 我如何做到“正确的方式”?