问题描述
- c#大神来,帮我调试一下代码
-
将连接数据库的方法写在了类里面,
form中调用类中连接数据库的方法,可是有错误,改来改去总是有各种错误,
求大神帮忙看看。
解决方案
看下报什么错误。你的链接字符串中有多余的空格,需要去掉。另外你的sql实例名是不是SQLEXPRESS,数据库名是否正确,是否是混合验证,sa密码是否是123,这些都要看你的数据库的设置。
解决方案二:
假设你的连接串没有问题的前提下,1.你这里的 OpenDataSource类只是保存一个String 字符串没有别的功能,可以删掉,把String字符串放到Form的窗体中去。
如果确实这样一个类来封装操作数据库,可以百度一下别人封装好的SqlHelper类。
2.Form中的类的SqlConnection 对象connection 一直是null,没有值。
3.按照你的代码,我简单改了一下,你试下可以用不? 如有错,再联系。。。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace BlogText
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//OpenDataSource open = new OpenDataSource();
static string connString = " Data Source=.SQLEXPRESS ;InitialCatalog=_1009firstpackage;User ID = sa; pwd = 123";
private void button1_Click(object sender, EventArgs e)
{
SqlConnection connection = new SqlConnection(connString);
connection.Open(); //打开数据库连接
//open.openDataSource();//调用连接数据库的方法
try
{
this.richTextBox1.Text += "打开数据库连接成功!n";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
connection.Close(); //关闭数据库连接
}
}
}
}
解决方案三:
public class OpenDataSource
{
public void openDataSource()//连接数据库的方法
{
// 数据库连接字符串
string connString =
" Data Source=.\SQLEXPRESS ;Initial Catalog=_1009firstpackage;User ID = sa; pwd = 123";
// 创建 Connection 对象
SqlConnection connection = new SqlConnection(connString);
connection.Open(); //打开数据库连接
}
}
这是连接数据库的类的代码
解决方案四:
这是form1中的代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
OpenDataSource open = new OpenDataSource();
SqlConnection connection;
private void button2_Click(object sender, EventArgs e)
{
open.openDataSource();//调用连接数据库的方法
try
{
this.richTextBox1.Text += "打开数据库连接成功!n";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
connection.Close(); //关闭数据库连接
}
}
解决方案五:
不好意思,刚刚少说了一点,需要把OpenDataSource的类给删掉。
连接我自己的数据库是没有问题的。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace BlogText
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//OpenDataSource open = new OpenDataSource();
//static string connString = " Data Source=.SQLEXPRESS ;InitialCatalog=_1009firstpackage;User ID = sa; pwd = 123";
string connString = " Data Source =.;Initial Catalog = QunInfo9;User Id = sa;Password = 123456";
private void button1_Click(object sender, EventArgs e)
{
//open.openDataSource();//调用连接数据库的方法
SqlConnection connection = new SqlConnection(connString);
try
{
connection.Open(); //打开数据库连接
this.richTextBox1.Text += "打开数据库连接成功!n";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
connection.Close(); //关闭数据库连接
}
}
}
我那个去,图传错了。。。。。
解决方案七:
这是一个错误。。。
你在form1里有个connection对象
在OpenDataSource类的openDataSource方法也有个connection对象
但是:虽然这两个对象名字一样,但是它们一点关系也没。
也就是说一旦openDataSource方法执行完了,里面的局部变量,也就是connection就丢失了。。。
解决方法是把connection设为OpenDataSource类的一个成员,然后把这个成员传给form1里的connection
public class OpenDataSource
{
public connection;//<---这里要把connetion作为类的成员,这样form才能用
public void openDataSource()//连接数据库的方法
{
// 数据库连接字符串
string connString =
" Data Source=.\SQLEXPRESS ;Initial Catalog=_1009firstpackage;User ID = sa; pwd = 123";
// 创建 Connection 对象
connection = new SqlConnection(connString);
connection.Open(); //打开数据库连接
}
}
form1:
private void button2_Click(object sender, EventArgs e)
{
SqlConnection connection;
OpenDataSource open = new OpenDataSource();
open.openDataSource();//调用连接数据库的方法
connection=open.connection;
......
}
解决方案八:
把错误提示截图发上来看看