我想开发使用数据库的应用程序。我在基于Web的数据库利用(mysql,pdo,带有php和旧式asp的mssql)方面经验丰富(作为业余爱好者)所以我的SQL知识相当不错。
我已经做过的事情......
我现在想要做的是,当单击一个按钮时,将使用SQL插入四个编辑框的内容。我不想使用任何隐藏SQL的“包装”代码。我希望尽可能多地使用我的SQL经验。
所以我想我想问的是我现在如何编写必要的代码来运行SQL查询来插入数据。我显然不需要知道SQL代码,只需要使用“本地数据库文件”连接的c#代码来运行SQL查询。
旁边的问题可能是 - 有没有比使用'Microsoft SQL Server数据库文件'连接类型更好/更简单的方法(我已经使用过它,因为它看起来像是一种方法,无需设置一个完整的SQL服务器)
答案 0 :(得分:0)
第一个例子是基于我认为它将更容易理解的过度视图,但由于易受SQL注入(更好的方法),这不是推荐的方法。但是,我觉得它更容易理解。
private void InsertToSql(string wordToInsert)
{
string connectionString = Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; User ID=myDomain\myUsername;Password=myPassword;
string queryString = "INSERT INTO table_name (column1) VALUES (" + wordToInsert + ")"; //update as you feel fit of course for insert/update etc
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open()
SqlDataAdapter adapter = new SqlDataAdapter();
SqlCommand command = new SqlCommand(queryString, connection);
command.ExecuteNonQuery();
connection.Close();
}
}
我还建议将其包装在try / catch块中,以确保连接在错误时关闭。
我无法测试这个,但我认为没关系!
再次不要在live中执行上述操作,因为它允许SQL注入 - 而是使用参数。但是,如果你来自PHP背景(只是为了变得舒服),可能会认为上面的内容更容易。
这使用参数:
public void Insert(string customerName)
{
try
{
string connectionString = Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; User ID=myDomain\myUsername;Password=myPassword;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
connection.Open() SqlCommand command = new SqlCommand( "INSERT INTO Customers (CustomerName" + "VALUES (@Name)", connection);
command.Parameters.Add("@Name", SqlDbType.NChar, 50, " + customerName +");
command.ExecuteNonQuery();
connection.Close();
}
catch()
{
//Logic in here
}
finally()
{
if(con.State == ConnectionState.Open)
{
connection.Close();
}
}
}
然后你只需更改SQL字符串以选择或添加!
答案 1 :(得分:0)
以下是使用参数插入数据,我认为这是一种更好的方法:
var insertSQL = "INSERT INTO yourTable (firstName, lastName, email, phone) VALUES (firstName, lastName, email, phone)";
string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; User ID=userid;Password=pwd;"
using (var cn = new SqlCeConnection(connectionString))
using (var cmd = new SqlCeCommand(insertSQL, cn))
{
cn.Open();
cmd.Parameters.Add("firstName", SqlDbType.NVarChar);
cmd.Parameters.Add("lastName", SqlDbType.NVarChar);
cmd.Parameters.Add("email", SqlDbType.NVarChar);
cmd.Parameters.Add("phone", SqlDbType.NVarChar);
cmd.Parameters["firstName"].Value = firstName;
cmd.Parameters["lastName"].Value = lastName;
cmd.Parameters["email"].Value = email;
cmd.Parameters["phone"].Value = phone;
cmd.ExecuteNonQuery();
}
这是从数据库中选择数据并填充datagridview:
var dt = new DataTable();
string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; User ID=userid;Password=pwd;"
using (var cn = new SqlCeConnection(connectionString )
using (var cmd = new SqlCeCommand("Select * From yourTable", cn))
{
cn.Open();
using (var reader = cmd.ExecuteReader())
{
dt.Load(reader);
//resize the DataGridView columns to fit the newly loaded content.
yourDataGridView.AutoSize = true; yourDataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
//bind the data to the grid
yourDataGridView.DataSource = dt;
}
}