本人电脑新手,有没有大佬知道怎么在VS中用ADO进行数据库中的多表查询

qq_40198321 2017-09-11 08:22:19
就是在Visual Studio中,连接数据库进行多表查询该如何去实现?有没有大佬来教我一下
...全文
390 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hfj13637261657 2017-10-30
  • 打赏
  • 举报
回复
先是要连接数据库(以SQL Server为例) 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 WindowsFormsApplication1 { public partial class 登录 : Form { public 登录() { InitializeComponent(); this.StartPosition = FormStartPosition.CenterScreen; } private void button1_Click(object sender, EventArgs e) { } private void 登录_Load(object sender, EventArgs e) { SqlConnection sqlConnection = new SqlConnection(); sqlConnection.ConnectionString = "Server=(Local);DataBase=EduBase2015;Integrated Security=sspi"; sqlConnection.Open(); MessageBox.Show ("连接状态:" + sqlConnection.State.ToString() + "\n工作站标识:" + sqlConnection.WorkstationId + "\n服务器地址" + sqlConnection.Database + "\n服务器版本" + sqlConnection.ServerVersion + "\n数据库名称" + sqlConnection.Database); sqlConnection.Close(); MessageBox.Show ("连接状态:"+sqlConnection .State.ToString ()); } } } 数据库连接成功之后,可以进行多表查询的操作(以下供参考): select 产品.产品名称,订单明细.单价,订单.订购日期 from 订单明细 join 订单 on 订单明细.订单ID = 订单.订单ID join 产品 on 订单明细.产品ID=产品.产品ID
吉普赛的歌 2017-09-12
  • 打赏
  • 举报
回复
引用 5 楼 qq_40198321 的回复:
问题已经解决了,谢谢大佬的帮助,我基本的SQL语句都会使用但是多表查询的时候出了点小问题
没事就结贴吧
qq_40198321 2017-09-12
  • 打赏
  • 举报
回复
问题已经解决了,谢谢大佬的帮助,我基本的SQL语句都会使用但是多表查询的时候出了点小问题
OwenZeng_DBA 2017-09-11
  • 打赏
  • 举报
回复
引用 楼主 qq_40198321 的回复:
就是在Visual Studio中,连接数据库进行多表查询该如何去实现?有没有大佬来教我一下
先说下,你能够进行简单的单表查询吗?如果会在以前的语句基础上稍微修改就可以
听雨停了 2017-09-11
  • 打赏
  • 举报
回复

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

    public class SqlTool
    {
        //数据库连接字符串
        private static string connStr = "Data Source=192.168.0.0;Initial Catalog=Test_DB;User ID=sa;Password=12345";

        //如果你要把链接的字符串写进配置文件,就用下面这个
        //private static string connStr = ConfigurationManager.ConnectionStrings["connString"].ConnectionString;

        /*** 可执行非查询SQL命令,如:增、删、改等 **/
        public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
        {
            //String connStr = System.Configuration.ConfigurationManager.AppSettings.Get(connKey);
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    foreach (SqlParameter parameter in parameters)
                    {
                        cmd.Parameters.Add(parameter);
                    }

                    return cmd.ExecuteNonQuery();
                }
            }
        }

        /** 返回查询结果的第一行第一列 **/
        public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                if(conn.State==ConnectionState.Closed){
                conn.Open();
                }
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    foreach (SqlParameter parameter in parameters)
                    {
                        cmd.Parameters.Add(parameter);
                    }
                    return cmd.ExecuteScalar();
                }
            }
        }

        /** 返回查询结果 **/
        public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    foreach (SqlParameter parameter in parameters)
                    {
                        cmd.Parameters.Add(parameter);
                    }
                    DataSet dataset = new DataSet();
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    adapter.Fill(dataset);            

                    return dataset.Tables[0];
                }
            }
        }
        // **返回查询结果的数据集 ** /
        public static DataSet getDataSet(String sql)
        {
            DataSet ds = new DataSet();
            SqlConnection Conn = new SqlConnection(connStr); 
            try
            {                               
                Conn.Open();
                SqlDataAdapter Da = new SqlDataAdapter(sql, Conn);
                Da.Fill(ds);
            }
            catch
            {
                return null;
            }
            finally
            {
                Conn.Close();
            }
            return ds;
        }
    }
你把以上的内容写成一个类文件,然后调用里面的方法就可以了,比如下面这样

//返回一个dataset结果集
string fuid ="hello";
//下面这个sql传了一个参数进去,即fuid;不过最好不要这样写,因为很容易被SQL注入攻击,最好是调用存储过程传参数;
//像下面这个sql语句一样,你把自己的sql语句放进去就可以了,随便连几个表,不过最多256个哈
string sql = "SELECT a.id, a.fuid,a.adress,a.title FROM sys_WebConfig_det a  WHERE  a.id='" + fuid + "'";
//SqlTool为上面的这个类;getDataSet为这个类里面的方法
Dataset ds_ds= SqlTool.getDataSet(sql);
有啥不懂再问,上面的是我复制以前写的代码,修改下给你的。大概思路就是这样吧
吉普赛的歌 2017-09-11
  • 打赏
  • 举报
回复
w3cschool 教程不错, 推荐你看看:http://www.w3school.com.cn/sql/sql_join.asp
吉普赛的歌 2017-09-11
  • 打赏
  • 举报
回复

--查询库中所有表的索引
SELECT t.name AS tableName,i.name AS indexName
FROM sys.indexes AS i INNER JOIN sys.tables AS t 
	ON i.[object_id]=t.[object_id]
多表查询类似上面, 无非是连接一下。 这跟VS没什么关系。 你有兴趣花一个月的时间来学SQL Server, 暂时忘记VS。

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧