我用它来连接我的SQL数据库。
namespace WindowsFormsApplication1
{
public partial class InvoiceGUI : Form
{
System.Data.SqlClient.SqlConnection con;
System.Data.SqlClient.SqlDataAdapter da;
DataSet ds1;
DataRow dRow;
int MaxRows = 0;
int inc = 0;
public InvoiceGUI()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
con = new System.Data.SqlClient.SqlConnection();
ds1 = new DataSet();
con.ConnectionString = "Data Source=(local);Initial Catalog=invoice_db;Integrated Security=SSPI";
con.Open();
//MessageBox.Show("open");
string sql = "select * from invoice";
da = new System.Data.SqlClient.SqlDataAdapter(sql, con);
da.Fill(ds1, "Invoice");
NavigateInvoice();
//Set the max rows
MaxRows = ds1.Tables["Invoice"].Rows.Count;
con.Close();
//MessageBox.Show("closed");
}
如何将连接移动到单独的类,如何从其他类(Windows窗体)访问我的数据库? 我想最好将连接放在一个类中,并从前WindowsForm2
中获取请举个例子
答案 0 :(得分:2)
试试这个:
1.创建类,例如 ConnectionClass.cs
2.将以下代码放入其中:
class clsConnectionClass:IDisposable
{
public SqlConnection cnn;
public clsConnectionClass()
{
if ((cnn = _cnn()) == null)
{
this.Dispose();
}
}
private SqlConnection _cnn()
{
SqlConnection conn = null;
string server = "Your server address or name"
string db = "Your dadabase name";
cnnString = string.Format("Server={0};Database={1};Trusted_Connection=SSPI;",server,db);
try
{
conn = new SqlConnection();
conn.ConnectionString = cnnString;
conn.Open();
return conn;
}
catch
{
conn.Dispose();
return null;
}
}
public void Dispose()
{
if (cnn != null)
{
cnn.Dispose();
}
}
}
3.在程序类中创建此类的静态对象,并在 Main 函数中初始化它。
static class Program
{
public static SystemParams.clsConnectionClass conn;
[STAThread]
static void Main()
{
conn = new SystemParams.clsConnectionClass();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Shared.frmMain());
}
}
现在,您可以在程序的任何位置使用此连接,例如 Program.conn.cnn 。
这是一个古老的答案,但仍然有人可以使用它。
答案 1 :(得分:0)
您应始终将与数据访问相关的代码移动到单独的类/ dll,如数据访问层。
您可以使用现成的数据访问组件(如Enterprise Libray数据访问块/ ORM框架,而不是编写自己的数据访问代码,这些组件提供了简单的界面和配置来操作各种数据库。
请参阅企业库信息的链接 http://entlib.codeplex.com/
使用企业库,您编写的所有内容都是数据访问层中的以下代码,并将实体对象(而不是数据集)返回到调用层或UI。
string sSql = "select * from customers";
Database dbNorthwind = DatabaseFactory.CreateDatabase();
DBCommandWrapper cmdCust = dbNorthwind.GetSqlStringCommandWrapper(sSql);
DataSet dsCust = dbNorthwind.ExecuteDataSet(cmdCust);
dataGrid1.DataSource = dsCust.Tables[0].DefaultView;
连接字符串将在配置文件中维护,因此您可以灵活地更改它。
希望这会有所帮助。 克里希纳