当前位置:编程学习 > C#/ASP.NET >>

如何把数据库和C#应用程序连接? (有待分析代码)

各位大牛好,小妹刚刚接触C#,现在遇到这样一个问题:如何把数据库和C#应用程序连接?
我的想法很简单,我创建了一个窗口程序,这个程序存放地址是默认的C盘下面.放了一个DataGridView在窗体上,还放了一个Button.
在我的E盘上有一个现成的数据库,数据库里有一堆表格们.数据库名称是MCUDataDataSet,我的意图就是点一下button相应的表格(这里我设的是Data_Rain那张表)就会调出来显示在窗体上.
我的代码是这样的
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;


namespace 连接数据库
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
         }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //生成连接数据库字符串
                string ConStr = "server=(local);database=MCUDataDataSet";
                //定义sqlConnection对像实例
                SqlConnection con = new SqlConnection(ConStr);
                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                }
                string ConnectionString = "Integrated Security=SSPI;Initial Catalog=;Data Source=localhost;";
                con.ConnectionString = ConnectionString;
                con.Open();
                //定义Select查询语句
                string SqlStr = "SELECT * FROM Data_Rain";
                SqlDataAdapter ada = new SqlDataAdapter(SqlStr, con);
                DataSet ds = new DataSet("Data_rain");
                ada.Fill(ds);
                //连接数据库表格,显示数据
                this.dataGridView1.DataSource = ds.Tables["Data_rain"].DefaultView;
            }
            catch
            {
                return;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
            Application.Exit();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: 这行代码将数据加载到表“mCUDataDataSet.Data_Rain”中。您可以根据需要移动或删除它。
            //this.data_RainTableAdapter.Fill(this.MCUDataDataSet.Data_Rain);

        }
    }
}

我还在"数据"里连接了我这个数据库.在数据源里是可以看到这个数据库和那一堆表格的.但是我点那个按钮,他就是没有反应.我觉得我应该是哪边没弄对,但是网上查了很多代码都是类似这样的,所以很困惑.哪位大牛能帮帮我,感激不尽!!

--------------------编程问答-------------------- 先看看连接是否对错 --------------------编程问答-------------------- catch里面最好用MessageBox显示一个消息,或者干脆就不抓异常,否则你catch社么都不做,出了异常也不知道, --------------------编程问答-------------------- 先确认连接是否正常,然后看sql是否正确,再看ds.Tables["Data_rain"]中是否有数据 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 问题一 数据库连接字符串有问题 一开始的ConStr指定了数据库 但当你判断连接状态后 你又重新给con指定了一个connectionString 而这个里并没有指定数据库 Initial Catalog是空的
问题二 你的查询结果并没有填充到你的DataSet中 所以你的DataSet里很可能是一张空表 既然是空表的话 datagridview里就什么都没有啦 建议调用ada的Fill方法把你的查询结果填充至DataSet --------------------编程问答--------------------  //连接数据库表格,显示数据
 this.dataGridView1.DataSource = ds.Tables["Data_rain"].DefaultView;
 this.dataGridView1.Databind();  --------------------编程问答--------------------
引用 6 楼 xingyu1815 的回复:
//连接数据库表格,显示数据
 this.dataGridView1.DataSource = ds.Tables["Data_rain"].DefaultView;
 this.dataGridView1.Databind();

winform不需要Databind webform需要这样做 --------------------编程问答-------------------- 楼主很明显是winform程序 --------------------编程问答-------------------- 1.try catch
            try
            {

            }
            catch (Exception ex)
            {
                
                MessageBox.Show(ex.ToString())
            }
2.断点调试你的程序看下你的dataset里面有没有数据。 --------------------编程问答--------------------  DataSet ds = new DataSet();
 ada.Fill(ds);
 //连接数据库表格,显示数据
 this.dataGridView1.DataSource = ds.Tables[0]; --------------------编程问答-------------------- 调试本地数据的话测试不是很方便,我可以帮你远程搞下 --------------------编程问答-------------------- sqlconnection con=new sqlconnection(server=./;database=数据库名;uid=你的数据库用户名;pwd=你的数据库密码);
con.open();
SqlDataAdapter sda = new SqlDataAdapter(数据库语句(要填充的内容), con);
            DataSet resultDS = new DataSet();
            sda.Fill(resultDS,表名);              //填充
            dgv.datasource=resultDS.tables[0];   //绑定


手打,也许有不对的地方 --------------------编程问答-------------------- LZ   变量ConnectionString 中Initial Catalog为空了 --------------------编程问答-------------------- 哇,一天就这么多回复,谢谢大家了!因为白天不能上外网,现在才看到,马上就来根据大家说的排查一下。这真是个好地方 
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,