【发布时间】:2020-10-31 05:26:15
【问题描述】:
我正在开发一个带有 sql 数据库的 windows 窗体项目,我想写一些数据,但我不能。 (代码没有给出任何错误,但是没有写入数据。 下面的代码就是我要写入数据的地方:
public static string stringConnection = @"Data Source=(localdb)\MSSQLLocalDB; AttachDbFilename=|DataDirectory|\POS.mdf; Integrated Security=True";
try
{
mySql = string.Empty;
mySql += "INSERT INTO Journal (Date) VALUES (" + "'"+ caisse + "'"+")" ;
connection.exsql(mySql);
}
catch(Exception exx)
{
MessageBox.Show(exx.ToString());
}
这里是connection.exsql方法:
public static void exsql(string sql)
{
SqlConnection connection = new SqlConnection();
SqlDataAdapter adapter = default(SqlDataAdapter);
try
{
connection.ConnectionString = stringConnection;
connection.Open();
adapter = new SqlDataAdapter(sql, connection);
connection.Close();
//connection = null;
}
catch (Exception ex)
{
MessageBox.Show("Fatal sql error: " + ex.Message, "Sql Server connection failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
【问题讨论】:
-
你没有执行任何命令,你只是打开一个连接并创建一个适配器,但什么也不做。研究
ExecuteNonQuery -
这也是在 .NET 应用程序中处理数据的一种非常古老的方式。现在的方法是使用实体框架,虽然它的代码更多,但从长远来看会更好。
-
总是使用参数来避免sql注入和格式化错误。您的
exsql方法不提供此功能。 -
@MatthewLayton 该声明非常不完整。你不应该把这样的信息告诉新程序员,他们会认为这是全世界最好的事情。现实情况是,这不仅仅是更多的代码,而且在我所见过的所有情况下,它都对数据性能造成了巨大影响。我们每年都在转换几十个在 EF 上运行而不是普通 SQL 服务的业务应用程序,并且速度提高了 10 倍以上。也许在纸面上看起来不错,但现实告诉我,在过去的 8 年里,我们一直在转换这些
标签: c# sql windows forms winforms