【发布时间】:2019-11-24 04:07:30
【问题描述】:
我确实查看了该网站上的其他几篇帖子并提出了以下解决方案,但没有成功。我将连接字符串放入 app.config 文件中,并将配置管理代码添加到应用程序代码中。如果删除应用程序中从本地数据库读取连接字符串的代码的配置管理行,应用程序可以正常工作。
app.config 文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<connectionStrings>
<add name="Test" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\cvyc8\Documents\Test.mdf;Integrated Security=True;Connect Timeout=30" />
</connectionStrings>
</configuration>
应用代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;
namespace Week_4_Test
{
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\cvyc8\Documents\Test.mdf;Integrated Security=True;Connect Timeout=30");
int Id = 0;
public Form1()
{
InitializeComponent();
string conStr = ConfigurationManager.ConnectionStrings["Test"].ConnectionString;
var connection =
System.Configuration.ConfigurationManager.
ConnectionStrings["Test"].ConnectionString;
}
private void btnSave_Click(object sender, EventArgs e)
{
try
{
if (con.State == ConnectionState.Closed)
con.Open();
if (btnSave.Text == "Save")
{
SqlCommand sqlCmd = new SqlCommand("MemberAddorEdit", con);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@mode", "Add");
sqlCmd.Parameters.AddWithValue("@Id", 0);
sqlCmd.Parameters.AddWithValue("@Name", txtName.Text.Trim());
sqlCmd.Parameters.AddWithValue("@PhoneNumber", txtNumber.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Address", txtAddress.Text.Trim());
sqlCmd.ExecuteNonQuery();
MessageBox.Show("Save Successful");
}
else
{
SqlCommand sqlCmd = new SqlCommand("MemberAddorEdit", con);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@mode", "Edit");
sqlCmd.Parameters.AddWithValue("@Id", Id);
sqlCmd.Parameters.AddWithValue("@Name", txtName.Text.Trim());
sqlCmd.Parameters.AddWithValue("@PhoneNumber", txtNumber.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Address", txtAddress.Text.Trim());
sqlCmd.ExecuteNonQuery();
MessageBox.Show("Updated Successful");
}
Reset();
FillDataGridView();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error Message");
}
finally
{
con.Close();
}
}
void FillDataGridView()
{
if (con.State == ConnectionState.Closed)
con.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter("MemberDisplayorSearch", con);
sqlDA.SelectCommand.CommandType = CommandType.StoredProcedure;
sqlDA.SelectCommand.Parameters.AddWithValue("@Name", txtSearch.Text.Trim());
DataTable dTbl = new DataTable();
sqlDA.Fill(dTbl);
dataGridView1.DataSource = dTbl;
con.Close();
}
private void btnSearch_Click(object sender, EventArgs e)
{
try
{
FillDataGridView();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error Message");
}
}
private void dataGridView1_DoubleClick(object sender, EventArgs e)
{
if (dataGridView1.CurrentRow.Index != -1)
{
Id = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value.ToString());
txtName.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
txtNumber.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
txtAddress.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
btnSave.Text = "Edit";
btnDelete.Enabled = true;
}
}
void Reset()
{
txtName.Text = txtNumber.Text = txtAddress.Text = "";
btnSave.Text = "Save";
Id = 0;
btnDelete.Enabled = false;
}
private void btnReset_Click(object sender, EventArgs e)
{
Reset();
}
private void Form1_Load(object sender, EventArgs e)
{
Reset();
FillDataGridView();
}
private void btnDelete_Click(object sender, EventArgs e)
{
try
{
if (con.State == ConnectionState.Closed)
con.Open();
SqlCommand sqlCmd = new SqlCommand("MemberDelete", con);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@Id", Id);
sqlCmd.ExecuteNonQuery();
MessageBox.Show("Deleted Successful");
Reset();
FillDataGridView();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error Message");
}
}
}
}
【问题讨论】:
-
看起来您从 app.config 文件中获取了连接字符串,但您从未使用它来实际打开连接。尝试在
Form1构造函数的末尾添加con = new SqlConnection(connection)。
标签: c# winforms connection