unity笔记

物体的各种控制方法

csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public class Componentl : MonoBehaviour
{
    // Transform transform;
    GameObject obj;
    public float floSpeed = 0;
    public float floRotate = 0;


    // Start is called before the first frame update
    void Start()
    {
        #region 第一节课
        // obj = GameObject.Find("Sphere"); // 找到球体
        //Debug.Log(transform.name); // 名字
        //Debug.Log(transform.tag); // 标签
        //Debug.Log(transform.position); // 位置
        //Debug.Log(transform.rotation); // 角度
        //Debug.Log(transform.eulerAngles); // 欧拉角
        //Debug.Log(transform.localEulerAngles); // 局部欧拉角
        //Debug.Log(transform.localPosition); // 局部位置
        //Debug.Log(transform.localRotation); // 局部角度
        //Debug.Log(transform.localScale); // 局部缩放
        //Debug.Log(transform.parent); // 父物体
        //Debug.Log(transform.childCount); // 子物体数量
        //Debug.Log(transform.forward); // 前方
        //Debug.Log(transform.up); // 上方
        //Debug.Log(transform.right); // 右边 



        // 其他常用方法
        // GameObject.Instantiate(obj, transform.position, transform.rotation); // 复制对象

        #endregion

        // 摄像机跟随物体
        // 控制摄像机
        Camera.main.transform.SetParent(transform); // 摄像机的transform变成当前物体的transform
        Camera.main.transform.localPosition = new Vector3(0, 3, -4); // 设置局部位置可以看到物体
        Camera.main.transform.localEulerAngles = new Vector3(6, 0, 0); // 摄像机稍微往下偏一点
    }

    // Update is called once per frame
    void Update()
    {
        #region 物体移动旋转
        //transform.Translate(Vector3.right * 0.01f);
        // 物体移动的第一种方法
        // transform.position += new Vector3(0, 2, 3); // 新建一个结构体
        // transform.position += Vector3.up * floSpeed * Time.deltaTime; // Time.deltaTime是每帧运行的时间
        // 1.在unity怎么调速度   2. 上节课运行了以后物体找不到了
        // ***********************
        // 物体移动的第二种方法
        //transform.Translate(Vector3.up * floSpeed * Time.deltaTime);

        // 物体旋转
        // transform.Rotate(Vector3.up * floRotate * Time.deltaTime);

        // 绕..物体旋转
        // transform.RotateAround(obj.transform.position, Vector3.up, floRotate * Time.deltaTime);

        // 盯住看
        // transform.LookAt(Camera.main.transform);

        // 其他常用方法
        // GameObject.Destroy(obj); // 删除游戏对象
        // Resources.Load(); // 加载游戏资源
        //  Application.Quit(); // 退出游戏

        //if (Input.GetKey(KeyCode.W)) {
        //    floRotate = 3000;
        //} else {
        //    floRotate = 0;
        //} 
        #endregion

        Move();
        Look();
    }

    // 鼠标控制物体旋转
    private void Look() {
        float x = Input.GetAxis("Mouse X") * floRotate * Time.deltaTime;
        // float y = Input.GetAxis("Mouse Y") * floRotate * Time.deltaTime;
        transform.Rotate(Vector3.up, x);
        // transform.Rotate(Vector3.up, y);
    }

    // 键盘控制物体平移
    private void Move() {
        float x = Input.GetAxis("Horizontal"); // 左右向
        float z = Input.GetAxis("Vertical"); // 前后向
        transform.Translate(new Vector3(x, 0, z) * floSpeed * Time.deltaTime);

        // 世界坐标系移动
        // cc.Move(new Vector3(x, 0, z) * floSpeed * Time.deltaTime);
        // cc.isGrounded(); // bool值 判断是否在地面
        // cc.SimpleMove(new Vector3(x, 0, z) * floSpeed);

        // 局部坐标系移动
        // cc.SimpleMove((transform.forward * z + transform.right * x) * floSpeed);
    }


    private void FixedUpdate() {
        
    }
}

输入系统、角色控制器、碰撞体、刚体、射线

  1. 输入系统 : InputSystem
  2. 角色控制器 CharacterController : 不能同时添加刚体组件
    Move(): 需要乘deltaTime, 不受重力影响, 需要使用isGrounded判断
    SimpleMove(): 不需要乘deltaTime, 不受重力影响
  3. 碰撞体 Collider
    碰撞检测:两方都有Collider, 至少一方有Rigidbody
  4. 刚体 Rigidbody
  5. 射线 Ray
csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Componentl2 : MonoBehaviour
{
    public float floSpeed = 50;
    public float floRotate = 180;
    public GameObject Sphere;

    // CharacterController cc; // 创建一个容器
    Rigidbody rb;

    // Start is called before the first frame update
    void Start()
    {
        // cc = GetComponent<CharacterController>(); // 把对象付给它
        rb = GetComponent<Rigidbody>();

        //rb.velocity = new Vector3(); // 物体初速度

        //rb.AddForce(new Vector3()); // 给物体添加力


    }

    // Update is called once per frame
    void Update()
    {
        #region 第二节课
        // 键盘控制代码
        //if (Input.GetKey(KeyCode.Escape)) {
        //    Debug.Log("按住空格");
        //}
        //if (Input.GetKeyUp(KeyCode.Space)) {
        //    Debug.Log("抬起空格");
        //    transform.Translate(Vector3.up * 10);
        //}
        //if (Input.GetKeyDown(KeyCode.Space)) {
        //    Debug.Log("按下空格");
        //}

        // 鼠标控制代码
        //if (Input.GetMouseButton(0)) {
        //    Debug.Log("按住鼠标左键");
        //}
        //if (Input.GetMouseButtonUp(0)) {
        //    Debug.Log("抬起鼠标左键");
        //    transform.Translate(Vector3.up * 10);
        //}
        //if (Input.GetMouseButtonDown(0)) {
        //    Debug.Log("按下鼠标左键");
        //}

        // 虚拟控制器控制
        //Debug.Log(Input.GetAxis("Horizontal"));
        //Debug.Log(Input.GetAxis("Vertical"));
        //Debug.Log(Input.GetAxisRaw("Horizontal"));
        //Debug.Log(Input.GetAxisRaw("Vertical"));

        // 鼠标转动视角
        //Input.mousePosition();
        //Input.GetAxis("Mouse X");
        //Input.GetAxis("Mouse Y");

        //Debug.Log(""); 
        #endregion

        learnRay();
    }

    private void learnRay() {
        if (Input.GetMouseButtonDown(0)) { // 单击鼠标左键
            // 创建一道射线
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            // 检测射线
            // out关键字 会输出一个信息 return只能return一个值,是一个bool值 out返回物体的信息
            if (Physics.Raycast(ray, out RaycastHit hitInfo)) {
                Debug.Log(hitInfo.transform.name);
                Debug.Log(hitInfo.point);
                //hitInfo.point; // 射线撞击点

                GameObject shell = Instantiate(Sphere,transform.position,transform.rotation);
                shell.GetComponent<Rigidbody>().velocity = Vector3.Normalize(hitInfo.point - transform.position) * 20;
            }
        }
    }

    #region 碰撞检测的方法
     碰撞检测的方法
     碰撞刚发生
    //private void OnCollisionEnter(Collision collision) {
    //    // Destroy(collision.transform.gameObject); 
    //    Debug.Log("刚碰到");
    //}
     碰撞结束
    //private void OnCollisionExit(Collision collision) {
    //    Debug.Log("碰完了");
    //}
     碰撞进行时
    //private void OnCollisionStay(Collision collision) {
    //    Debug.Log(collision.transform.name);
    //} 




    private void OnTriggerEnter(Collider other) {
        rb.AddForce(transform.up * 500); // 撞到以后跳一下
        //Debug.Log("我进来啦");
    }

    private void OnTriggerStay(Collider other) {
        Debug.Log(other.transform.name);
    }

    private void OnTriggerExit(Collider other) {
        Debug.Log("我走啦");
    }

    #endregion
}

Unity音视频系统

csharp 复制代码
using System;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

public class Component3 : MonoBehaviour
{
    AudioSource ads;
    AudioClip ac;
    List<AudioClip> acs = new List<AudioClip>();
    int j = 0;
    // Start is called before the first frame update
    void Start()
    {
        ads = GetComponent<AudioSource>(); // 找到组件

        #region AudioSource常用属性和方法
        //ads.Play(); // 播放
        //ads.Pause(); // 暂停
        //ads.UnPause(); // 继续播放
        //ads.PlayOneShot(); // 播放一次 配合音效使用
        //ads.volume = 1.0f; // 音量
        //ads.playOnAwake = true; // 唤醒时播放
        //ads.mute = false; // 静音
        //ads.loop = false; // 循环
        //ads.isPlaying = false; // 是否播放中
        //ads.clip; // 声音片段 
        #endregion

        // 加载音频资源的方法
        // ac = Resources.Load<AudioClip>("AudioClips/1");
        for (int i = 0; i < 3; i ++ ) {
            ac = Resources.Load<AudioClip>("AudioClips/" + (i + 1));
            acs.Add(ac);
        }
    }

    // Update is called once per frame
    void Update()
    {
        changeVolume();
        playMusic();
        changeMusic();
    }

    private void changeVolume() {
        if (Input.GetKeyDown(KeyCode.M)) {
            ads.volume += 0.05f;
        } else if (Input.GetKeyDown(KeyCode.N)) {
            ads.volume -= 0.05f;
        }
    }

    private void playMusic() {
        if (Input.GetKeyDown(KeyCode.B)) {
            if (ads.isPlaying) {
                ads.Pause(); // 暂停
            } else {
                ads.Pause();
            }
        }
    }

    private void changeMusic() {
        if (Input.GetKeyDown (KeyCode.Tab)) {
            ads.clip = acs[j];
            ads.Play();

            if (j < acs.Count - 1) {
                j ++ ;
            } else {
                j = 0;
            }
        }
    }
}

学习动画控制器组件

csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Component4 : MonoBehaviour
{
    Animator am;
    // Start is called before the first frame update
    void Start()
    {
        am = GetComponent<Animator>();

        StartCoroutine(learnConroutine());
        // 关闭协程
        //StopCoroutine(learnConroutine()); 
        //StopAllCoroutines();
    }

    // Update is called once per frame
    void Update()
    {
        //if (Input.GetKeyDown(KeyCode.F)) {   
        //    am.SetTrigger("pickup"); // 设置触发
        //    //am.SetBool(); // 设置bool值
        //    //am.SetFloat(); // 设置浮点数
        //    //am.SetInteger(); // 设置整数值

        //}
    }

    // Unity中协程的使用,采用的是yield return ,返回值是一个协程器
    // 协程:介于进程和线程之间的一个定义,简单理解为一段一段的程序
    IEnumerator learnConroutine() { // 协程器
        // 技能CD
        while (true) {
            if (Input.GetKeyDown(KeyCode.F)) {
                am.SetTrigger("pickup"); // 设置触发
                yield return new WaitForSeconds(5); 
            } else {
                yield return null;
            }
            ...
            //yield return new WaitForSeconds(5); // 过5秒再执行
            ...
            //yield return null; // 把程序变成要的之前先执行,下次再执行的话,到要的之后再执行
        }
        
    }

}

学习GUI系统

csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // 旧版GUI命名空间
using TMPro; // 新版GUI命名空间
using UnityEngine.SceneManagement; // 场景管理
using System;

public class Component5 : MonoBehaviour
{
    // 给GUI对象赋值的两种方式:
    // 第一种方式:getcomponent
    //Text t;
    // 第二种方式:public + 外界赋值
    public Text t;
    public Image image;
    public RawImage rawImage;
    public Button button;
    public InputField inputField;
    public Toggle toggle;
    public Slider slider;
    public Scrollbar scrollbar;
    public Dropdown dropdown;

    //TextMeshPro tmp;
    // Start is called before the first frame update
    void Start()
    {
        // 文本Text
        //t.GetComponentInChildren<Text>(); 
        t.text = "好好听课别玩了"; // 更改文本内容
        //t.font; // 字体

        // 图片 Image
        //image.sprite = Resources.Load<Sprite>("") as Sprite; // 更改图片

        // 原始图片 RawImage
        rawImage.texture = Resources.Load<Texture>("Images/bg2") as Texture; // 更改背景图片

        // 按钮 Button
        // 调用方法的第一种方式:public + Unity中设置

        // 调用方法的第二种方式:AddListener
        button.onClick.AddListener(clickButton); // 添加监听 保证没有很多对外接口

        // 文本输入框 InputField
        //inputField.text; // 输入的内容

        // 切换 Toggle
        toggle.onValueChanged.AddListener(clickToggle); // 改变值的写法
        //toggle.isOn; // 不改变值

        // 滑动条 Slider
        slider.onValueChanged.AddListener(changeSlider);
        //slider.value;

        // 滚动条 Scrollbar
        scrollbar.onValueChanged.AddListener(changeSlider);
        //scrollbar.value;

        // 下拉列表 Dropdown
        InitDropdown();
        dropdown.onValueChanged.AddListener(changeDropdown);
    }

    public void InitDropdown() {
        dropdown.options.Clear(); // 清除列表
        Dropdown.OptionData opl = new Dropdown.OptionData();
        opl.text = "比尔吉沃特";
        dropdown.options.Add(opl);
        Dropdown.OptionData op2 = new Dropdown.OptionData();
        op2.text = "德玛西亚";
        dropdown.options.Add(op2);
    }

    void changeDropdown(int intValue) {
        switch (intValue) {
            case 0:
                Debug.Log("登录比尔吉沃特");
                break;
            case 1:
                Debug.Log("登录德玛西亚");
                break;
            default:
                break;
        }
    }

    void clickButton() {
        if (inputField.text == "123") {
            Debug.Log("回答正确");
        } else {
            Debug.Log("回答错误");
        }
    }

    void clickToggle(bool isOn) { // 必须带bool参数
        if (isOn) {
            Debug.Log("静音");
        } else {
            Debug.Log("播放");
        }
    }

    void changeSlider(float floValue) {
        if (floValue < 0.3) {
            Debug.Log("血量太低了");
        } else {
            Debug.Log("血量健康");
        }
    }
}

学习Unity事件系统EventSystem

学习Unity事件系统EventSystem
IPointr ... Handler // 指针事件接口
I ... DragHandler // 拖拽事件接口

csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems; // 事件系统命名空间
using UnityEngine.UI;
using TMPro; // 新版文本命名空间

public class Component6 : MonoBehaviour, IPointerClickHandler, IDragHandler, IPointerEnterHandler, IPointerExitHandler {
    // 新版文本的类名称
    //TMP_Text;
    //TMP_InputField;
    //TMP_Dropdown dropdown
    public void OnDrag(PointerEventData eventData) { // 拖拽
        //transform.position = Input.mousePosition;
        transform.position = eventData.position; // 两个都可以实现
    }

    public void OnPointerClick(PointerEventData eventData) { // 点击
        Debug.Log("点击图片");
        
    }

    public void OnPointerEnter(PointerEventData eventData) { // 进入
        GetComponent<Image>().color = Color.blue;
    }

    public void OnPointerExit(PointerEventData eventData) { // 退出
        GetComponent<Image>().color = Color.white;
    }
}

控制声音的GUI组件、退出游戏

csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Component7 : MonoBehaviour
{
    // 控制声音的GUI组件
    public Toggle toggle;
    public Slider slider;
    AudioSource ads;

    // 退出游戏
    public Button button;

    // Start is called before the first frame update
    void Start()
    {
        ads = GetComponent<AudioSource>();
        toggle.onValueChanged.AddListener(PlayMusic);
        slider.onValueChanged.AddListener(ChangeVolunme);
        button.onClick.AddListener(QuitGame);

    }
    private void QuitGame() {
        Application.Quit();
    }

    private void ChangeVolunme(float arg0) {
        ads.volume = arg0;
    }

    private void PlayMusic(bool arg0) { 
        if (arg0) {
            ads.Pause();
        } else {
            ads.UnPause();
        }
    }
}

学习数据库操作

csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MySql.Data.MySqlClient; // MySQL连接命名空间
using System;
using Org.BouncyCastle.Security;

public class Component8 : MonoBehaviour
{
    // 服务器、端口号、数据库、用户名、密码、数据格式...
    string strConn = "server = localhost; port = 3306; database = dbforcsharp; username = root; password = LiuYue20030214; charset=utf8;";

    // 创建MySQL连接器
    MySqlConnection sqlConnection;

    // Start is called before the first frame update
    void Start()
    {
        // 操作数据库的第一步:
        try {
            sqlConnection = new MySqlConnection(strConn);
            sqlConnection.Open(); // 连接数据库
            Debug.Log(sqlConnection.State); // 输出状态

            //1.增 insert
            //int i1 = InsertData();
            //Debug.Log(i1);

            //2.删 delete
            //int i2 = DeleteData();
            //Debug.Log(i2);

            //3.改 update
            //int i3 = UpdateData();
            //Debug.Log(i3);

            // 4. 查
            selectData();

        } catch (System.Exception) {

            throw;
        } finally {
            if (sqlConnection.State.ToString() == "Open") {
                // 操作数据库的最后一步
                sqlConnection.Close();
                Debug.Log(sqlConnection.State);
            }
        }
    }
    /// <summary>
    /// 查询某一行数据
    /// </summary>

    private void selectData() {
        // 第一步 写SQL语句
        string strSql = "select * from peo where name = '虚竹';";

        // 第二步 使用MySQLCommand发送语句
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)) {

            // 第三步 执行ExecuteReader方法 
            using (MySqlDataReader mysqlDataReader = mySqlCommand.ExecuteReader()) {

                // 第四步 通过MySQLDataReader读取数据
                while (mysqlDataReader.Read()) {
                    // 使用GetXXX获取不同的数据
                    Debug.Log(mysqlDataReader.GetString(0));
                    Debug.Log(mysqlDataReader.GetString(1));
                    Debug.Log(mysqlDataReader.GetString(2));
                }
            }


        }

    }

    /// <summary>
    ///  所有的非查询操作都是一样的步骤
    /// </summary>

    private int InsertData() {
        // 第一步 写SQL语句
        string strSql = "insert into peo (name, age) values ('虚竹', 25);";

        // using降低内存占用
        // 第二步 使用MySQLCommand发送语句
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)) {
            
            // 第三步 执行ExecuteNonQuery方法 执行非查询操作 返回int 当数字不为0 表示第i行发生更改
            return mySqlCommand.ExecuteNonQuery();

        }
    }

    private int DeleteData() {
        // 第一步 写SQL语句
        string strSql = "delete from peo where name = '刘悦';"; // where 其中

        // using降低内存占用
        // 第二步 使用MySQLCommand发送语句
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)) {

            // 第三步 执行ExecuteNonQuery方法 执行非查询操作 返回int 当数字不为0 表示第i行发生更改
            return mySqlCommand.ExecuteNonQuery();

        }
    }

    private int UpdateData() {
        // 第一步 写SQL语句
        string strSql = "update peo set name = '张三疯' where name = '张三丰';";

        // using降低内存占用
        // 第二步 使用MySQLCommand发送语句
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)) {

            // 第三步 执行ExecuteNonQuery方法 执行非查询操作 返回int 当数字不为0 表示第i行发生更改
            return mySqlCommand.ExecuteNonQuery();

        }
    }
}

实现登录和注册功能

  • 登录: 获取输入框内容 -> 连接并打开数据库 -> 查找用户名和密码 -> 关闭数据库
    Y -> 对比用户名和密码 -> Y -> 登录成功
    Y -> 对比用户名和密码 -> N -> 提示登录失败
    N -> 提示登录失败
  • 注册: 获取输入框内容 -> 连接并打开数据库 -> 查找用户名和密码
    Y -> 关闭数据库 -> 提示用户已存在
    N -> 添加用户名和密码 -> 关闭数据库 -> 注册成功

  • 分解: 按照顺序分解成一个一个模块, 不一定优
  1. 连接并打开数据库
  2. 查找用户名和密码
  3. 关闭数据库
  4. 对比用户名和密码
  5. 添加用户名和密码

  • 接口:
  1. 登录 1234
  2. 注册 1235

  • 对象: GUI:输入框2 按钮2 文本

  • 连接数据库: MySqlConnection, ...command, ...reader

  • 字符串: 连接数据库, 用户名2, 密码2(用户输入+数据库)
csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MySql.Data.MySqlClient;
using TMPro;
using UnityEngine.UI;
using System;
using UnityEngine.SceneManagement;

public class Component9 : MonoBehaviour
{
    // 创建GUI
    // 新版 待改 -> 已改旧版
    public InputField inputField1;
    public InputField inputField2;
    public Button button1;
    public Button button2;
    public Text tip;

    // 服务器、端口号、数据库、用户名、密码、数据格式...
    string strConn = "server = localhost; port = 3306; database = dbforcsharp; username = root; password = LiuYue20030214; charset=utf8;";

    // 创建MySQL连接器
    MySqlConnection sqlConnection;

    string username;
    string password;
    string usernameDB;
    string passwordDB;

    // 事件 监听 执行
    // Start is called before the first frame update
    void Start()
    {
        button1.onClick.AddListener(Login);
        button2.onClick.AddListener(Registrations);
    }

    public void Login() {
        username = inputField1.text;
        password = inputField2.text;
        //1.连接并打开数据库
        ConnectDB();
        //2.查找用户名和密码
        SelectDB(username);
        //3.关闭数据库
        CloseDB();
        //4.对比用户名和密码
        CompareDB();
    }

    public void Registrations() {
        username = inputField1.text;
        password = inputField2.text;
        //1.连接并打开数据库
        ConnectDB();
        //2.查找用户名和密码

        // 我写的
        //if (username == usernameDB) {
        //    tip.text = "用户名已存在, 请重新输入";
        //} else {
        //    int i = InsertDB(username, password);
        //    CloseDB();
        //    tip.text = "创建成功";
        //}

        // 老师写的
        if (SelectDB(username)) {
            tip.text = "用户名已存在";
        } else {
            // 3. 添加用户名和密码
            if (InsertDB(username, password) == 1) {
                tip.text = "注册成功";
            } else {
                tip.text = "注册失败";
            }
            
        }

        // 4. 关闭数据库
        CloseDB();
    }

    private void ConnectDB() {
        try {
            sqlConnection = new MySqlConnection(strConn);
            sqlConnection.Open(); // 连接数据库
            Debug.Log(sqlConnection.State); // 输出状态
        } catch (Exception) {

            throw;
        }
    }

    private bool SelectDB(string n) {
        bool isExist = false;
        // 第一步 写SQL语句
        string strSql = "select * from user where username = '" + n + "';";

        // 第二步 使用MySQLCommand发送语句
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)) {

            // 第三步 执行ExecuteReader方法 
            using (MySqlDataReader mysqlDataReader = mySqlCommand.ExecuteReader()) {

                // 第四步 通过MySQLDataReader读取数据
                while (mysqlDataReader.Read()) {
                    isExist = true;
                    usernameDB = mysqlDataReader.GetString(0);
                    passwordDB = mysqlDataReader.GetString(1);
                }
            }
        }
        return isExist;
    }

    private void CloseDB() {
        if (sqlConnection.State.ToString() == "Open") {
            // 操作数据库的最后一步
            sqlConnection.Close();
            Debug.Log(sqlConnection.State);
        }
    }

    private void CompareDB() {
        if (usernameDB == username && passwordDB == password) {
            // tip.text = "登录成功";
            SceneManager.LoadScene(1);
            // SceneManager.LoadScene("Scene1");
        } else {
            tip.text = "登录失败";
        }
    }

    private int InsertDB(string u, string p) {
        // 第一步 写SQL语句
        string strSql = "insert into user (username, password) values ('" + u + "', '" + p + "');";

        // using降低内存占用
        // 第二步 使用MySQLCommand发送语句
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)) {

            // 第三步 执行ExecuteNonQuery方法 执行非查询操作 返回int 当数字不为0 表示第i行发生更改
            return mySqlCommand.ExecuteNonQuery();

        }
    }
}
相关推荐
QT 小鲜肉9 分钟前
【孙子兵法之上篇】001. 孙子兵法·计篇深度解析与现代应用
笔记·读书·孙子兵法
love530love3 小时前
【笔记】ComfUI RIFEInterpolation 节点缺失问题(cupy CUDA 安装)解决方案
人工智能·windows·笔记·python·插件·comfyui
愚戏师3 小时前
MySQL 数据导出
数据库·笔记·mysql
摇滚侠3 小时前
2025最新 SpringCloud 教程,教程简介,笔记01
笔记·spring cloud
RickyWasYoung5 小时前
【笔记】智能汽车、电动汽车政策文件
笔记·汽车
love530love8 小时前
【保姆级教程】Windows + Podman 从零部署 Duix-Avatar 数字人项目
人工智能·windows·笔记·python·数字人·podman·duix-avatar
草莓熊Lotso9 小时前
《算法闯关指南:动态规划算法--斐波拉契数列模型》--01.第N个泰波拉契数,02.三步问题
开发语言·c++·经验分享·笔记·其他·算法·动态规划
qq_2052790514 小时前
Unity TileMap 使用经验
unity·游戏引擎
FFF团团员90916 小时前
树莓派学习笔记3:LED和Button
笔记·学习
心灵宝贝16 小时前
Mac Unity 2018.dmg游戏工具 安装步骤 简单易懂教程(附安装包)
macos·unity·游戏引擎