none
winform 如何连接添加新建项里添加的本地数据库 RRS feed

答案

  • 您好!我成功读取了你的数据库,现在将代码给你。
    using System.Data.SqlServerCe;//需要添加引用。

    string strConnection = "Data Source=D:\\db.sdf";
                string select = "SELECT [table].* FROM [table]";

                SqlCeConnection objConnection = new SqlCeConnection(strConnection);
                objConnection.Open();

                SqlCeDataAdapter adapter = new SqlCeDataAdapter(select,strConnection);

                DataSet ds = new DataSet();

                adapter.Fill(ds,"table");
                dataGridView1.DataSource = ds.Tables[0];

    好了,睡觉去了!


    ♡. Microsoft .NET Platform
    • 已标记为答案 ww-air 2009年6月30日 0:34
    2009年6月29日 15:29

全部回复

  • 你的问题总是很模糊,呵呵,你是问代码连接到数据库是吧。假设你的是SQL SERVER
     //打开数据库连接
    string conn=@"uid=;pwd=;server=loaclhost;database=db";
    SqlConnection myconn=new SqlConnection(conn);
    myConn.open();

    手动写的,建议你去MSDN上看看ado.net,自己联系下 有问题在与大家交流

    ♡. Microsoft .NET Platform
    2009年6月28日 9:40
  • 是在项目中添加数据库(解决方案资源管理器中),不是在SQLSERVER中新建数据库然后连接,所以是没有登录名密码之类的,就是类似你上面的代码我试过,运行后是没有任何反应的,下面是我的代码,运行后不报错,也没任何反应,连form窗体都不显示。

    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 localdb
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                string sql = "select * from table";
    
                //数据库连接
                SqlConnection con = new SqlConnection("Data Source=|DataDirectory|\\db.sdf");
                con.Open();
    
                //跟数据库交互
                SqlCommand cmd = new SqlCommand(sql, con);
    
                //数据适配器
                SqlDataAdapter sda = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                sda.Fill(ds);
    
                dataGridView1.DataSource = ds.Tables[0];
    
                con.Close();
            }
        }
    }
    
    2009年6月28日 10:20
  • Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;Data Source=myPath\myData.sdf; 这种格式看看


    ♡. Microsoft .NET Platform

    • 已编辑 mnbhy310 2009年6月28日 10:35
    2009年6月28日 10:28
  • 你好!
         你的连接字符串有问题,不能直接连接数据库文件,需要通过Sql Server才能连接数据库,这样写试试:
    SqlConnection conn = new SqlConnection( 
    " uid=sa;pwd=passwords;initial catalog=pubs;data source=127.0.0.1;Connect Timeout=900");
    周雪峰
    2009年6月28日 10:36
    版主
  • 运行了Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;Data Source=myPath\myData.sdf; 之后
    错误提示“不支持provider”
    运行了
    SqlConnection conn = new SqlConnection( 
    " uid=sa;pwd=passwords;initial catalog=pubs;data source=127.0.0.1;Connect Timeout=900");
    之后还是不显示form

    关键是按我建立数据库的方法,建立的时候并没有要求输入登录名和密码,所以我把uid之类的删掉了,但还是没有显示form

    再试一下,vs中,解决方案资源管理器中,右键添加新建项,添加的本地数据库,然后建立一个表,输入一些数据,然后连接看看

    2009年6月28日 11:18
  • 请给出你的数据库具体情况是sdf还是MDF

    string strConnection ="Data Source=你服务器的名字;Initial Catalog=数据库名;Integrated Security=True";
    SqlConnection objConnection = new SqlConnection(strConnection);
                string select = "select * from 你的表名";
                objConnection.Open();

                DataSet ds = new DataSet();
                SqlDataAdapter adapter = new SqlDataAdapter(select,objConnection);
              
                adapter.Fill(ds, "你的表名");
                dataGridView1.DataSource = ds.Tables[0];


    ♡. Microsoft .NET Platform
    2009年6月28日 11:39
  • 数据库是db.sdf
    错误提示:
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)

    我代码中的服务器是在“服务器资源管理器”找的名字,把Data Source=WIN-GQ6TAG2S77T;删掉或改local都有同样的错误提示

    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 localdb
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                string strConnection = "Data Source=WIN-GQ6TAG2S77T;Initial Catalog=db.sdf;Integrated Security=True";
                string select = "select * from table";
    
                SqlConnection objConnection = new SqlConnection(strConnection);
                objConnection.Open();
    
                SqlDataAdapter adapter = new SqlDataAdapter(select, objConnection);
                DataSet ds = new DataSet();
    
                adapter.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
            }
        }
    }
    2009年6月28日 13:55
  • 这是你的数据库问题了,改成WIN-GQ6TAG2S77T\\SQLEXPRESS  也就是你进数据库里面那个实例的名字,你不是默认的实例吧。进数据库看名字,解决方案那是机器名  机器名\实例名
    ♡. Microsoft .NET Platform
    2009年6月29日 1:41
  • 之前我WIN-GQ6TAG2S77T\\SQLEXPRESS  的是试过的,
    错误信息是:
    无法打开登录所请求的数据库 "db.sdf"。登录失败。
    用户 'WIN-GQ6TAG2S77T\Administrator' 登录失败。

    2009年6月29日 1:55
  • 能否给我一份你的数据库,我试试,,就是db.sdf这个  QQ610147或MSN也行


    ♡. Microsoft .NET Platform
    2009年6月29日 2:17
  • sdf是windows ce 才能用的吧。。。。mobile!!!!
    ♡. Microsoft .NET Platform
    2009年6月29日 2:21
  • 信息已经提示得很清楚了,

    Data Source=WIN-GQ6TAG2S77T;Initial Catalog=db.sdf;Integrated Security=True
    改为
    Data Source=WIN-GQ6TAG2S77T\SQLEXPRESS;Initial Catalog=你的数据库名(如Nothwind,Pubs,不是数据文件名);Integrated Security=True

    知识改变命运,奋斗成就人生!
    2009年6月29日 2:26
    版主
  • MOBILE访问pc的数据库可以,但是pc访问MOBILE数据库没试过,up... 学习学习
    ♡. Microsoft .NET Platform
    2009年6月29日 2:28
  • 你直接用数据库连接控件连接一下,再看看web.config里面他是怎么写的不就知道了吗
    我的博客,最近新写了一个Windows Mobile 6.5 Widget开发的文章,欢迎捧场
    尽力回答每一个问题,但不代表一定正确,希望初学者能够多自己尝试。。共勉。。:)
    2009年6月29日 3:39
    版主

  • 上面的我也试过了还是不行
    刚刚建了一个邮箱,把我的文件发到收件箱了
    ww-temp@163.com
    234567
    如果有兴趣的话,试试看好了, 
    2009年6月29日 7:39
  • 您好!我成功读取了你的数据库,现在将代码给你。
    using System.Data.SqlServerCe;//需要添加引用。

    string strConnection = "Data Source=D:\\db.sdf";
                string select = "SELECT [table].* FROM [table]";

                SqlCeConnection objConnection = new SqlCeConnection(strConnection);
                objConnection.Open();

                SqlCeDataAdapter adapter = new SqlCeDataAdapter(select,strConnection);

                DataSet ds = new DataSet();

                adapter.Fill(ds,"table");
                dataGridView1.DataSource = ds.Tables[0];

    好了,睡觉去了!


    ♡. Microsoft .NET Platform
    • 已标记为答案 ww-air 2009年6月30日 0:34
    2009年6月29日 15:29
  • mnbhy310 :
    我发现这里的select语句有点特殊,不能写成SELECT * FROM table ,不知道这里是不是有什么特殊的规范
    2009年6月30日 0:43
  • 你试试把表取个其他的名字,不要命名为Table!
    周雪峰
    2009年6月30日 9:46
    版主