VS2019 连接数据库

方法一:

找到视图——SQLServer 对象资源管理器——添加数据库

连接上即可

然后找到你要用的数据库的属性里面的连接字符串

接下来就可以操作数据库了

class Test1
    {
        private string MySqlCon1 = "Data Source=localhost;Initial Catalog=SQLStudySimple;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
        private string MySqlCon2 = ConfigurationManager.ConnectionStrings["TestSQLServer"].ConnectionString;
        public DataTable ExcuteQuery(string sqlStr)
        {
            
           // SqlConnection con = new SqlConnection(@MySqlCon1);  //自定义连接对象
            SqlConnection con = new SqlConnection(@MySqlCon2);
            SqlCommand cmd = new SqlCommand();  //创建命令对象
            cmd.Connection = con;   //设置命令对象的数据库连接属性
            DataTable dt = new DataTable();
            try
            {
                con.Open(); //打开数据库连接
                Console.WriteLine("连接数据库成功!");
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sqlStr;
                SqlDataAdapter msda = new SqlDataAdapter(cmd);
                msda.Fill(dt);
            }
            catch (Exception e)
            {
                Console.WriteLine("连接失败,失败原因:"+e.Message);
            }
            finally
            {
                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                    Console.WriteLine("关闭成功");
                }
            }
            
            return dt;
        }

里面的MysqlCon 就是刚才的连接字符串

碰到的问题:发现一开始没有指定数据库,Initial Catalog是这个参数没有加上,这个就是指定你要绑定的数据库。

ConmmandType 中的参数问题

  Text:表示普通的SQL语句

  StoredProcedure:表示是存储过程

  TableDirect:我也没搞懂 :(

上面还用了config去绑定,老朋友了。

其实一开始的步骤存在问题,应该是视图——服务器资源管理,然后在这里面去连接绑定数据源,这里面的连接字符串更加简洁Data Source=localhost;Initial Catalog=SQLStudySimple;Integrated Security=True,就三个参数,第一个是数据源,第二个是数据库,第三个:true 在不知道用户名和密码的情况下就可以连接数据库,false 或者 不写 ,就一定要输入正确的登录名和密码。

DataTable 是一个表结构,遍历:

            Test1 test1 = new Test1();
            string strSql = "SELECT * FROM table_Zomble";
            DataTable dt = test1.ExcuteQuery(strSql);
            for(int i = 0; i < dt.Rows.Count; i++)  //打印data,table
            {
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    Console.Write(dt.Rows[i][j].ToString()+"  ");
                }
                Console.WriteLine();
            }
            Console.ReadLine();

 

方法二:

    class Test2
    {
        public void ConnectionSQLServer()
        {
            SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder();
            sb.DataSource = "localhost";
            sb.IntegratedSecurity = true;
            sb.InitialCatalog = "SQLStudySimple";
            SqlConnection con = new SqlConnection(sb.ToString());
            try
            {
                con.Open();
                string str = "select * from table_Zomble";
                SqlCommand sc = new SqlCommand(str,con);
                SqlDataReader sd = sc.ExecuteReader();
                while (sd.Read())
                {
                    Console.WriteLine(sd["zomble_name"].ToString());
                }
            }catch(Exception e)
            {
                Console.WriteLine("数据库连接失败,失败原因:"+e.Message);
            }
            finally
            {
                if (con.State == System.Data.ConnectionState.Open)
                {
                    con.Close();
                    Console.WriteLine("数据库连接关闭");
                }
            }
        }
    }

两种方法其实本质没差别。

SqlDataReader这个对象理解不深,现在只知道可以将执行读取返回的数据放在里面,然后循环读出。

以上都是查询操作,修改操作其实同理,只是SQL语句不同。第二个例子也可以将SQL查询语句作为参数传递,实现封装效果。

中间改登录名密码登录,发现出错。参考:这里,解决。

 

Mysql连接:

    class Test3
    {
        private string MySqlCon1 = "Server=localhost;Port=3306;Database=sqlstudysimple;Uid=root;Pwd=";
        public void ConnectionMySQL()
        {
            MySqlConnection con = new MySqlConnection(MySqlCon1);
            try
            {
                con.Open();
                Console.WriteLine("连接成功!");
                string str = "select * from table_myplant";
                MySqlCommand sc = new MySqlCommand(str, con);
                MySqlDataReader sd = sc.ExecuteReader();
                while (sd.Read())
                {
                    Console.WriteLine(sd["plant_name"].ToString());
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("数据库连接失败,失败原因:" + e.Message);
            }
            finally
            {
                if (con.State == System.Data.ConnectionState.Open)
                {
                    con.Close();
                    Console.WriteLine("数据库连接关闭");
                }
            }
        }
    }

差别不大。

posted @ 2022-07-25 15:42  xunzf  阅读(736)  评论(0)    收藏  举报