【发布时间】:2011-12-12 04:48:55
【问题描述】:
我尝试将一些数据插入我的数据库(sql server/本地文件),但它不起作用。
public bool SaveCookie(string cookie, string expires)
{
SimpleDBM db = new SimpleDBM();
db.Connect();
try
{
string query = string.Format("INSERT INTO Cookies(cookie_value, cookie_expires) VALUES('{0}', '{1}');", cookie, expires);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = query;
//...
SqlDataReader data = db.Query(ref cmd);
return data.Read();
}
catch
{
return false;
}
finally
{
db.Close();
}
}
SimpleDBM 类:
public class SimpleDBM {
public static string dbpath = @"...";
public static string dbname = "db.mdf";
public static string dfullPath = Path.Combine(dbpath, dbname);
public static string connStr = string.Format(@"Data Source=.\SQLEXPRESS;AttachDbFilename={0};Integrated Security=True;Connect Timeout=30;User Instance=True", dfullPath);
private SqlConnection con;
public void Connect()
{
con = new SqlConnection();
con.ConnectionString = connStr;
con.Open();
}
public SqlDataReader Query(ref SqlCommand cmd)
{
cmd.Connection = con;
return cmd.ExecuteReader();
}
public void Close()
{
con.Close();
}
}
谁能指出我的错误?对于其他查询,它似乎工作正常。
提前致谢。
【问题讨论】:
-
你得到什么错误?还是您根本没有收到错误,只是没有插入?
-
异常应该告诉你错误是什么。
-
Fee fi fo fum,我闻到了 SQL 注入的味道。
-
@TheMask:使用 参数化查询! 不要将 SQL 语句串在一起,而是使用:
INSERT INTO Cookies(cookie_value, cookie_expires) VALUES(@Cookie, @Expires);,然后在SqlComamnd中设置参数值.请参阅 Scott Chamberlain 的回答 - 他非常详细地展示了它
标签: c# .net sql sql-server-2005