Background Image

FORUM

DJ
조회 수 167 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Window11 pro
CUBRID Ver.
CUBRID 9.3 (9.3.9.0002) (64bit release build for Windows_NT)
CUBRID TOOL Ver.
10.2.0.0001  (64bit)
응용 환경(API)
odbc


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

 

namespace server
{
    public partial class login : Form
    {

        public struct cubridConn // cubrid 연결
        {
            public XmlDocument xmlConfig; // xml 설정 가져오기
            public string dbConnectString;
            public bool dbOpenState;
            public OdbcConnection dbConn;//큐브리드 연결.

        }

        public cubridConn _serverComm = new cubridConn();
        public login()
        {
            InitializeComponent();
            Thread_CubridConnect();

        }

        public Server socNaverBlog;
        private void login_Load(object sender, EventArgs e)
        {
            try
            {
                //xml 주소 
                _serverComm.xmlConfig = new XmlDocument();
                _serverComm.xmlConfig.Load(Application.StartupPath + "/login.xml"); // xml파일을 로드(시작점은 login.xml 파일로 부터)

                // database
                XmlNode dbConnectString = _serverComm.xmlConfig.SelectSingleNode("/DB_Connect");

              
                _serverComm.dbConnectString = dbConnectString.InnerText;

                //MessageBox.Show(_serverComm.dbConnectString);
            }
            catch (Exception)
            {


                MessageBox.Show("실행 파일 에러. 관리자에게 문의하세요.");
            }
        }

        private void Thread_CubridConnect()
        {
            System.Threading.Timer timerDB = new System.Threading.Timer(DB_Connect);
            
            timerDB.Change(0, 2000); //OK
        }

        object _lockobject;
        private void DB_Connect(object sender)
        {
            try
            {
                if (!_serverComm.dbOpenState)
                {
                    _serverComm.dbConn = new OdbcConnection(_serverComm.dbConnectString);
                    //MessageBox.Show(_serverComm.dbConnectString);
                    _serverComm.dbConn.Open();
                    _serverComm.dbOpenState = true;
                    if (_serverComm.dbConn.State == ConnectionState.Closed)
                        return;
                }
            }
            catch (OdbcException)
            {
            }
            catch (Exception ex)
            {

            }
            finally
            {
                _serverComm.dbConn.Close();
            }
        }
            signup signup = new signup();
        private void btn_new_Click(object sender, EventArgs e)
        {
            signup.ShowDialog();
        }
        Server serverSoc = new Server();

 

 


        private void btn_login_Click(object sender, EventArgs e)
        {
            string id = textBox1.Text; //①,②
            string pw = textBox2.Text; //①,②

          

            string userID = textBox1.Text;//③
            string userPW = textBox2.Text;//③

            //OdbcCommand cmd = new OdbcCommand();

            //cmd.CommandType = CommandType.Text;

            //cmd.CommandText = "SELECT id,pw FROM sock_table WHERE id = '" + id + "'&& pw = '" + pw + "';";

            //string query = "SELECT * FROM sock_table WHERE id=? and pw=?"; //①

            

            string sql_cub_sel = "SELECT * FROM sock_table WHERE id=? and pw=?"; ③

            string sql_cub_sel = "SELECT * FROM sock_table WHERE id=@id and pw=@pw"; ④
            //string sql_cub_ins = "INSERT INTO sock (id,pw) VALUES (@id,@pw);";
            //OdbcConnection conn = new OdbcConnection(_serverComm.dbConnectString);//①,②

            using (var connect = new OdbcConnection(_serverComm.dbConnectString))
            {

                try
                {
                    connect.Open(); //연결

                    using (var command = new OdbcCommand(sql_cub_sel, connect))
                    {
                        command.Parameters.AddWithValue("@id", userID);
                        command.Parameters.AddWithValue("@pw", userPW);

                        command.ExecuteNonQuery();

                        connect.Close();
                    }

                    MessageBox.Show(userID + "로그인 완료");
                    serverSoc.ShowDialog();
                }
                catch (Exception)
                {

                    throw;
                }

            }

         }

     }

}

 

로그인 버튼 클릭시 DB 에 있는 데이터를 select 해와서 로그인 하려고 하는데요, 

 파라미터 바인딩을 사용 하려고 합니다. 

 

보통 c#은 파라미터 바인딩 할 때 @변수 를 붙이는 데 큐브리드의 경우 쿼리에 @변수를 붙여서 실행하면 (④번 쿼리문의 경우) 

 

예외처리가 되지 않음

System.Data.Odbc.OdbcException: 'ERROR [HY000] [CUBRID][ODBC CUBRID Driver][-1070]Session variable '@id' not defined.[CAS INFO-10.10.10.60:33000,1,12988].'

 

이런 알림 문구가 뜹니다. 

 

③번 쿼리문 처럼 '?'를 넣으면 문제 없이 실행되는데

혹시 큐브리드만의 파라미터 바인딩 방식이 있는지 궁금합니다

 

 

  • ?
    큐브리드_김주현 2023.03.14 10:24
    큐브리드를 이용해 주셔서 감사합니다.

    ? 를 사용해야 하며, 순서를 지켜야 하는 제약만 있습니다.
    상세내용은 https://www.cubrid.org/manual/ko/11.2/api/adodotnet.html#id10 참고 바랍니다.
    감사합니다.
  • ?
    DJ 2023.03.14 10:44

    https://www.cubrid.org/manual/ko/9.2.0/sql/query/prepare.html
    @로 prepared statement에서 사용이 가능하다고 나오는데요, 이것도 사용 할 수 있는건가요??

  • ?
    큐브리드_김주현 2023.03.15 16:40
    네 prepare state문으로 사용하실 경우 가능합니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4444
3987 cubrid count 속 2 kanin 2024.04.19 11
3986 cubrid 10.1 데이터 덮어쓰기 질문입니다. 1 ysk96 2024.04.18 19
3985 ACTION 명령어? 예약어? 1 투투투투기기 2024.04.17 17
3984 sql 구문 사용시 데이터 타입 decimal일 경우 1 투투투투기기 2024.04.11 28
3983 Regexp_count 4 SEO 2024.04.09 57
3982 큐브리드 메모리 오류 관련 질문 2 file 뚜벅뚜벅 2024.04.09 58
3981 큐브리드 실행이 안되는 이슈 1 file 최현욱 2024.04.09 37
3980 unloaddb & loaddb 관련 질문이 있습니다. 1 543534512 2024.04.06 44
3979 mac m1 다운로드 오류 1 file 혜주냉면 2024.04.05 41
3978 list 함수로 만든 sequence type을 varchar로 변환 문의 1 플레이어블 2024.04.04 36
3977 DECODE, CASE WHEN 사용법 문의 2 핑크팬더 2024.04.03 54
3976 schema 파일 loaddb - 스키마 정보 중복오류 문의 4 daay 2024.03.21 89
3975 object to string 4 네오랜덤 2024.03.20 68
3974 mysql로 DB연동 문의 2 연동테스트용 2024.03.20 69
3973 특정DB만 접근 시간이 현저하게 오래 걸리는 문제 1 file 그로구 2024.03.20 60
3972 jdbc 연동시의 charset 강제 변경 방법 1 file gwak 2024.03.14 57
3971 도커로 HA환경 구성 테스트중 hb start.. 1 wodud0170 2024.03.12 63
3970 이중화 관련 문의드립니다. 1 adqwdqwd123412 2024.03.12 67
3969 큐브리드 마스터 복제 관련 문의 드립니다. 2 이지혜 2024.03.11 61
3968 큐브리드 다운로드 에러 1 file 나래아빠 2024.03.08 85
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales